2012-07-21 67 views
1

我想在將記錄插入到sqllite db後從另一個活動調用listview適配器。如何從另一個活動調用ListView適配器進行刷新 - notifyDataSetChanged()

我無法調用adapter.notifyDataSetChanged()方法。什麼是最好的方式來做到這一點。

public void onClick(View v) { 
    TextView item_name; 
    item_name=(TextView) findViewById(R.id.eItemName);   
    Log.d("Insert: ", "Inserting .."); 
    db.add_item(new Item(item_name.getText().toString()), getApplicationContext()); 

    // I want to call the method HERE!!!! 

    finish(); 
} 
+0

如果沒有該活動的實例,如何更改數據集?您可以手動啓動活動,並在活動的onCreate中更新數據庫中的列表項。\ – Li3ro 2012-07-21 11:32:56

回答

1

只是

finish()當前活動,請從onActivityResult()adapter.notifyDataSetChanged()在以前的活動(如我假設你的列表視圖在此之前的活動)。

而且距上一次活動使用startActivityForResult();

開始你當前活動或如果你有這個活動列表適配器的參考,然後使用該引用調用adapter.notifyDataSetChanged()。 (但我認爲它不是一個好的做法)

+0

尊敬的@ user370305我有兩項活動,ItemsActivity和ItemsAddActivity,並且我開始了ItemsAddActivity這個代碼: 'private void prepareListener() { \t \t listener_open_add_item =新OnClickListener(){\t \t \t \t \t \t公共無效的onClick(視圖v){ \t \t \t \t意圖意圖=新意圖(getBaseContext(),ItemsAddActivity.class); \t \t \t \t startActivity(intent); \t \t \t \t \t \t \t} \t \t};我想在startActivity(intent)之後嘗試adapter.notifyDataSetChanged();我試過在startActivity(intent)後面使用adapter.notifyDataSetChanged()方法。線。但它沒有奏效。 Cas行在AddItemActivity完成之前運行。因爲我嘗試在finish()之後運行代碼。在那個方法。 – RedLEON 2012-07-21 11:48:00

+0

現在用ItemsActivity中的'startActivity(intent)'來代替'startActivityForResult(intent,0)'並且在onActivityResult()方法中添加''。在'onActivityResult()'方法寫'adapter.notifyDataSetChanged();' – user370305 2012-07-21 11:50:48

+0

我添加了這段代碼,但它似乎onActivityResult方法無法調用。我仍在嘗試... – RedLEON 2012-07-21 12:18:30

1

更好的選擇將重新加載您的ListView新的數據在您的活動的onResume()你有ListView。沒有必要從另一個班級撥打notifyDataSetChanged(),因爲您的另一個活動中沒有顯示您的列表。

@Override 
protected void onResume() { 
    super.onResume(); 

    //fill your Collection with new data 
    // setAdapter or notify your adapter 
} 
+0

thx您的建議。它工作正常。 但我想我調用該方法時重新加載ListView。 Cas notifyDataSetChanged不起作用。 – RedLEON 2012-07-22 10:19:14

+0

'notifyDataSetChanged()不工作?',它應該工作。 – 2012-07-23 04:02:33

+0

不幸的是不工作。 – RedLEON 2012-07-23 13:40:09

相關問題