gpt4 book ai didi

android - 从自定义 ListView 类中刷新 ListView

转载 作者:行者123 更新时间:2023-11-29 14:17:49 25 4
gpt4 key购买 nike

我使用 LoaderManager 为我的 ListView 的适配器填充数据。我实现了 LoaderManager.Callbacks 但无法刷新 ListView 来显示新数据。调用 adapter.notifyDatasetChanged()invalidate()postInvalidate() 什么都不做。

部分代码:

@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;
}
}

适配器ListView类的默认构造函数中初始化。

适配器和 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);
}
}
}

最佳答案

试试这个:

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

关于android - 从自定义 ListView 类中刷新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com