繁体   English   中英

从上一个活动获取文本并将其添加到另一个活动列表视图

[英]Getting text from previous activity and adding it another activities list view

单击按钮后如何动态地将项目添加到列表中? 文本被添加到listView 目前,它仅将一个项目添加到列表视图,而当您尝试添加另一个项目时,它仅更改列表中已添加的项目。

这是我的代码:

这是活动A的单击按钮,它获取文本:

schedule.setOnClickListener(new OnClickListener() {

         public void onClick(View view) {

             AddSchedule();

             Intent i = new Intent(ScheduleActivity.this, MainActivity.class);
             String str = event_name.getText().toString();
             i.putExtra("myExtra", str);
             startActivity(i);

         }

     });

然后在活动B中从活动B获取文本,但仅添加

最终ListView listView =(ListView)findViewById(R.id.listView); adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,list); listView.setAdapter(适配器);

    Intent i = getIntent();
    if (i.hasExtra("myExtra")) {
        list.add(i.getStringExtra("myExtra"));
        adapter.notifyDataSetChanged();
    }

您只能在新活动的列表中看到一项,因为该活动是每次通过startActivity(Intent)创建的(我想)。 因此,每次打开活动B时,它都是一个新实例。 arraylist为空。

您需要跟踪活动A中单击的项目,并每次将整个列表发送到活动B。 活动B应该获得意图中的完整列表并创建gui列表。

使您的类实现ParcelableSerializable (较慢)。

在活动B中,您应包括以下内容:

@Override
public void onSaveInstanceState(Bundle out){
    super.onSaveInstanceState(out);
    out.putStringArrayList(key, list);
}

“键”是您在Activity的B成员变量中定义的最终String。

这将确保您的列表在销毁之前已保存(有关更多信息,请参见Activity Lifecycle 。现在,无论何时创建活动,您都还需要还原。您可以在onCreateView执行以下操作:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    //restore the contents of your list
    if (savedInstanceState!=null)
        list=savedInstanceState.getStringArrayList(key);

    /* initialize the adapter and set it to the list */

    //also add the new item from activity A
    Intent i = getIntent();
    if (i.hasExtra("myExtra")) {
        list.add(i.getStringExtra("myExtra"));
        adapter.notifyDataSetChanged();
    }
}

一般说明,您可以将项目直接添加到适配器中,而不必添加到列表中并随后通知适配器。 适配器将自动更新您的列表。

编辑:是的,您的列表应该是一个成员变量,因为它需要通过2种方法进行访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM