如何在android中捕获Listview Custom ListAdapter类中的intent的结果

时间:2014-02-19 04:25:03

标签: android android-intent android-listview arraylist onactivityresult

我有一个ArrayList,它有Person类型的对象。人员类具有字段名称,地址1,地址2,城市,州,邮政编码和国家。我希望能够编辑特定的人,然后更新更改,以便显示人员的ListAdapter显示更新的数据。此ListView包含在RecipientActivity(活动A)

在自定义适配器中,我使用TextView的onClick事件中的intent启动Activity RecipientAddressActivity(Activity B):

holder.txtRecName.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {               
            Intent rec_Intent = new Intent(context,
                                        RecipientAddressActivity.class);
            rec_Intent.putExtra("Current_Recipient",
                                         recipientArray.get(index));
            rec_Intent.putExtra("RecipientIndex",index);
            context.startActivity(rec_Intent);          

        }
    }); 

在活动B中,我在onCreate()事件中获取Current_Recipient和索引,如下所示:

current_rec = (Person) getIntent().getSerializableExtra(
            "Current_Recipient");
Recipient_Index = getIntent().getIntExtra("RecipientIndex", 151);

在同一个活动中,我有一个“保存”按钮,在其Onclick上我创建一个Person对象,可以是新人或正在编辑的老人。

按钮保存的onClick()事件

{
  Intent Recipient_info = new Intent();
  Person recipient = new Person(edt_rec_name.getText().toString(),
   edt_rec_addr1.getText().toString(),edt_rec_addr2.getText().toString(),
   edt_rec_city.getText().toString(), edt_rec_state.getText().toString(),
   edt_rec_pcode.getText().toString(), edt_rec_country.getText().toString()); 
   Recipient_info.putExtra("Person", recipient);
   Recipient_info.putExtra("RecipientIndex", Recipient_Index);
   setResult(RESULT_OK, Recipient_info);
   finish();
}

问题是有两种方法可以启动Activity B.我不知道在使用ListView的适配器启动Actvity B时,在何处或如何捕获结果。

请尽快帮助我。如果需要更多代码或解释,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:1)

我注意到你的代码:

您没有以activityForResult开始活动。

检查并立即尝试!如果你仍然遇到这个问题而不是这里有一些链接,这对你的问题很有用:

calling onActivityResult from CustomArray adapter

onActivityResult in not called in the class extended from ArrayAdapter

How to add item in Custom listView in onActivityResult method?

How to Call onActivityResult in adapter listview?