Ben*_*ant 4 android android-arrayadapter android-activity
希望我能成功解释我的情况.
我有一个活动(A),它基本上是一个添加新项目的表单,文本字段,时间和位置字段很少.当单击一个setlocation按钮时,它会调用第二个Activity(B),它具有一个带有自定义ArrayAdapter的列表视图,该ArrayAdapter为locactins提供建议.单击一个项目(适配器类中的OnClickListener)时需要将其传递回活动A.
从A调用活动B.
Intent I = new Intent(getApplicationContext(), TaskGeoSetActivity.class);
startActivityForResult(I, LOC_ACTIVITY_CODE);
Run Code Online (Sandbox Code Playgroud)
在活动B中设置适配器
Adapter = new TaskGeoSubBaseAdapter(getApplicationContext(), R.id.sugtext, result);
Adapter.setActivity(TaskGeoSetActivity.this);
lv.setAdapter(Adapter);
Run Code Online (Sandbox Code Playgroud)
适配器中的OnClick事件
public void setActivity(Activity act) {
parentAct = act;
}
private final OnClickListener locpicker = new OnClickListener() {
@Override
public void onClick(View v) {
Address a = items.get((Integer) v.getTag());
Intent intent = new Intent(context, TaskAddActivity.class);
intent.putExtra("Address", a);
parentAct.setResult(parentAct.RESULT_OK, intent);
}
};
Run Code Online (Sandbox Code Playgroud)
用这个替换你的点击处理程序.
private final OnClickListener locpicker = new OnClickListener() {
@Override
public void onClick(View v) {
Address a = items.get((Integer) v.getTag());
Intent intent = new Intent(context, TaskAddActivity.class);
intent.putExtra("Address", a);
((Activity)v.getContext()).setResult(parentAct.RESULT_OK, intent);
((Activity)v.getContext()).finish();
}
}
Run Code Online (Sandbox Code Playgroud)
在您的调用活动中重写onActivityResult以处理结果.OUR_REQUEST_CODE是您在调用startActivityForResult时发送的请求代码.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){
case OUR_REQUEST_CODE:
if(resultCode == RESULT_OK) {
//Do something useful with data
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4078 次 |
| 最近记录: |