2

我使用LoaderManager來填充我的ListView的適配器與數據。我實現了LoaderManager.Callbacks,但我無法刷新ListView以顯示新數據。 調用adapter.notifyDatasetChanged(),invalidate()postInvalidate()什麼都不做。從自定義ListView類中刷新ListView

一些代碼:

@Override 
public void onLoadFinished(Loader<ArrayList<Items>> arrayListLoader, ArrayList<Items> entries) { 
    Log.i("TAG", "+++ onLoadFinished() called! +++"); 
    switch (arrayListLoader.getId()) { 
     case LOADER_ID: 
      mAdapter.setData(entries); 
      mAdapter.notifyDataSetChanged(); 
      invalidate(); 
      break; 
    } 
} 

adapterListView類的默認構造函數初始化。

適配器和ListView初始化(精簡到相關部分):

public CustomListView(Activity activity) { 
    [...] 
    mAdapter = new CustomEntryAdapter(mActivity, R.layout.row_monthlistview); 
    setAdapter(mAdapter); 
    mCallbacks = this; 
    LoaderManager loaderManager = mActivity.getSupportLoaderManager(); 
    loaderManager.initLoader(LOADER_ID, null, mCallbacks); 
    [...] 
} 

我的自定義AdaptersetData方法:

public void setData(ArrayList<Items> data) { 
    clear(); 
    if (data != null) { 
     for (Items aData : data) { 
      add(aData); 
     } 
    } 
} 
+0

願你可以重新初始化適配器,嘗試重新初始化.... – Pragnani

+0

你在此改變你的轉接器內的getCount將()方法? 它應該像返回entries.size(); – Vetalll

+0

@Pragnani謝謝,我已經嘗試創建一個新的'Adapter'並將其設置爲'ListView'。沒有用。 – Leandros

回答

0

在我的具體情況下似乎是不可能的。 LoaderManager是問題的根源,我不能將n LoaderManager綁定到n views

LIM N - >∞

-3

我認爲你需要調用listView.setAdapter()方法呼叫後notifyDataSetChanged()

+0

適配器已經初始化並設置爲'ListView'。儘管如此,我之前做過,並沒有幫助。 – Leandros

+0

相同或創建一個新的,都不起作用。 – Leandros

0

試試這個:

yourGlobalList.clear(); 
yourGlobalList.addAll(entries) 
mAdapter.notifyDataSetChanged(); 
+0

這與我的適配器的'setData'方法幾乎相同。 – Leandros