从以前的活动中获取文本并将其添加到其他活动列表视图
单击按钮时,如何将项目动态添加到列表中?该文本被添加到listView
。目前它只向列表视图中添加一个项目,而当您尝试添加另一个项目时,它只会更改列表中已添加的项目。从以前的活动中获取文本并将其添加到其他活动列表视图
这里是我的代码:
这是获取文本上点击活性的按钮:
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中的文本,但只增加了
Final ListView listView =(ListView)findViewById(R.id.listView); adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,list); listView.setAdapter(adapter);
你只看到新activty的列表中的一个项目,因为该活动是通过startActivity(意向)创建的每个时间(我想)。所以每次打开活动B,这是一个新的实例。数组列表是空的。
您需要跟踪活动A中点击的项目,并且每次将整个列表发送到活动B.活动B应该获得意图中的完整列表并创建gui列表。
让你的类实现Parcelable或Serializable
(慢)。
不知道我安静了解,所以每次的按钮点击它需要parcelable到其他活动 – user3461038
内活动b。您应包括以下内容:
@Override
public void onSaveInstanceState(Bundle out){
super.onSaveInstanceState(out);
out.putStringArrayList(key, list);
}
“钥匙”是你在活动的B成员变量定义的最终字符串。 。
这将确保您的列表被销毁(更多以前保存,阅读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种方法访问。
该列表如何?这也是一个变量? – user3461038
@ user3461038列表应该是一个成员变量,因为它需要在2个方法中访问。不要忘记初始化它! – user3673613
发表您的完整代码,请 –
我刚才编辑的代码来显示什么是活性A和B发生,是否可以帮助 – user3461038