2012-11-30 57 views
5

更新後,我有兩個簡單的活動 - 活動1:ListView控件從數組 活性2:在活動1刷新的ListView在另一個活動

當我編輯活性2到活動1的值,並返回編輯單擊列的EditText, ListView不會重新加載新值。

我想刷新ListView時,我從Activity2返回或恢復Activity1或將更新列表的東西。

我的代碼:

static ArrayAdapter<String> dataAdapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      // Loading the values to list array 
     String[][] fulllist = loadArrays(); 
     String[] list = new String[fulllist.length]; 
     for(int i = 0; i<fulllist.length; i++) { 
      list[i] = fulllist[i][1]; 
      } 
      // -------------------------------- 

      dataAdapter = new ArrayAdapter<String>(this, 
           android.R.layout.simple_list_item_1, 
           list); 
      setListAdapter(dataAdapter); 
      } 
@Override 
public void onResume() { 
     super.onResume(); 
     // Loading the values to list array 
     String[][] fulllist = loadArrays(); 
     String[] list = new String[fulllist.length]; 
     for(int i = 0; i<fulllist.length; i++) { 
      list[i] = fulllist[i][1]; 
      } 
     // -------------------------------- 

     dataAdapter = new ArrayAdapter<String>(this, 
          android.R.layout.simple_list_item_1, 
          list); 
     dataAdapter.notifyDataSetChanged(); 
} 

loadArrays()是轉換從SharedPreferences到字符串數組只是方法。 Activity2將新數據保存在SharedPreferences中,並且Activity1可以讀取它(使用新數據)。 如果我返回到「主要活動」(它不是Activity1)並且返回到Activity1 - 顯示新數據,但是我希望當我立即從Activity2返回時更新此數據。

loadArrays()方法:pastebin.com/MHwNC0jK

請多關照!

+0

代碼loadArrays()將有助於更好地理解 – Shakti

回答

10

在點擊您的第一個活動項目,與startActivityForResult()

開始你的第二個活動

然後在第二次活動中,進入EditText之後,可能會出現一個按鈕。而在該按鈕呼叫onClick

intent.putExtra("edittextvalue", findViewById(R.id.edittext).getText().toString()); 
setResult(RESULT_OK, intent); 
finish(); 

現在你回到你的第一個活動,在這裏你必須實現onActivityResult()回調。您可以從該意圖的額外數據中提取數據,並在陣列中設置相應的項目並呼叫notifyDataSetChanged()

這是您應該如何做的理想選擇。

如果你想如何使用startActivityForResult()嘗試此鏈接的詳細信息 - http://manisivapuram.blogspot.in/2011/06/how-to-use-startactivityforresult.html

+0

這會給我一點不同的數據和結果不是我想要的,但我會檢查它。 – Dennis

+2

非常感謝!這工作! – Dennis

-3

將完整列表聲明爲全局變量並使用靜態數組列表。

1

1)獲取參考的ListView

mListView = (ListView)findViewById(R.id.auto_listview); 

2)創建適配器一個更多的時間與改變的值

MyAdapter myAdapter = new MyAdapter(getApplicationContext(), 
            R.layout.locations_list_item_layout,dataArray; 
mListView.setAdapter(myAdapter); 

setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

       public void onItemSelected(AdapterView<?> adapterView, 
         View view, int i, long l) { 

myAdapter = new MyAdapter(getApplicationContext(), 
    //pass changed values vlues array        R.layout.locations_list_item_layout,dataArray; 
mListView.setAdapter(myAdapter); 

} 

       public void onNothingSelected(AdapterView<?> arg0) { 
        // TODO Auto-generated method stub 

       } 
      }); 
相關問題