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