2011-04-18 80 views
0

我正在刷新Android的清單,但似乎無法做到。Android列表刷新

我用過notifyDataSetChanged();在我認爲適用的每一點上(目前使用對話框輸入),但它不起作用,並且我已到了遍佈整個地方的地步,它仍然不會刷新。

我是否正確地說這應該刷新列表,而你看着它,或者它會重建列表,你仍然需要刷新視圖?

如果任何人有任何關於它的定位與建設名單的建議,我很樂意聽到。

+0

代碼請... – Wroclai 2011-04-18 17:18:46

+0

您是否在更改適配器本身或您用來創建適配器的某個陣列? – Aleadam 2011-04-18 17:23:21

回答

1

這是一個ListActivity?我目前在我的項目中有一個ListActivity,我有自己的適配器類,它擴展了ArrayAdapter。

我的經驗是,在我的擴展列表適配器類實例上調用notifyDataSetChanged()會立即導致正在顯示的列表視圖的刷新。因此,只要在我的適配器實例上調用.notifyDataSetChanged(),列表View就會重新生成,因此會導致我的適配器的getView()實現被調用以再次生成每個單獨的行視圖。因此,用戶選擇一個上下文菜單項,它會觸發某些數據更改,然後調用.notifyDataSetChanged(),並立即刷新新數據。

所以要添加一些代碼段是明確的:

我有一個ListActivity

public class VarListActivity extends ListActivity { 

在這,我向ArrayAdapter

class VarAdapter extends ArrayAdapter{ 

... 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 

     // Creates the views based upon myData 

    ... 

    @Override 
    public int getCount(){ 

    ... 

我創建數組的一個實例適配器

la = new VarAdapter(this, R.layout.row0); 

當一個上下文菜單中選擇

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.a_context_menu_option: 

      // Does a call to perform modifications to myData 

      la.notifyDataSetChanged(); 
     return true; 

我只是夾持這一切下來,以防萬一它是任何相似的情況,但我們真的需要知道一點關於你的代碼。