从以前的活动中获取文本并添加其他活动列表视图

时间:2015-04-22 16:38:18

标签: java android listview

如何在单击按钮时动态地将项目添加到列表中?该文本已添加到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();
    }

2 个答案:

答案 0 :(得分:1)

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

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

让您的班级实施ParcelableSerializable(更慢)。

答案 1 :(得分:0)

内部活动B您应该包括以下内容:

MVVM

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

这将确保您的列表在被销毁之前保存(有关详情,请参阅Activity Lifecycle。现在,您还需要在创建活动时进行恢复。您可以在@Override public void onSaveInstanceState(Bundle out){ super.onSaveInstanceState(out); out.putStringArrayList(key, list); } 中执行此操作像这样:

onCreateView

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

编辑:是的,您的列表应该是成员变量,因为它需要以2种方法访问。