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

问题描述:

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

​​
+0

发表您的完整代码,请 –

+0

我刚才编辑的代码来显示什么是活性A和B发生,是否可以帮助 – user3461038

你只看到新activty的列表中的一个项目,因为该活动是通过startActivity(意向)创建的每个时间(我想)。所以每次打开活动B,这是一个新的实例。数组列表是空的。

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

让你的类实现ParcelableSerializable(慢)。

+0

不知道我安静了解,所以每次的按钮点击它需要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种方法访问。

+0

该列表如何?这也是一个变量? – user3461038

+0

@ user3461038列表应该是一个成员变量,因为它需要在2个方法中访问。不要忘记初始化它! – user3673613