2015-04-22 82 views
0

單擊按鈕時,如何將項目動態添加到列表中?該文本被添加到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

回答

1

你只看到新activty的列表中的一個項目,因爲該活動是通過startActivity(意向)創建的每個時間(我想)。所以每次打開活動B,這是一個新的實例。數組列表是空的。

您需要跟蹤活動A中點擊的項目,並且每次將整個列表發送到活動B.活動B應該獲得意圖中的完整列表並創建gui列表。

讓你的類實現ParcelableSerializable(慢)。

+0

不知道我安靜瞭解,所以每次的按鈕點擊它需要parcelable到其他活動 – user3461038

0

內活動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

相關問題