如何在单击按钮时动态地将项目添加到列表中?该文本已添加到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();
}
答案 0 :(得分:1)
您只能在新的activty列表中看到一个项目,因为每次通过startActivity(Intent)创建该Activity(我想)。所以每次打开Activity B,它都是一个新实例。 arraylist是空的。
您需要跟踪活动A中单击的项目,并且每次都将整个列表发送到活动B.活动B应该获得意图中的完整列表并创建gui-list。
让您的班级实施Parcelable或Serializable
(更慢)。
答案 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种方法访问。