gpt4 book ai didi

java - 添加数据时notifyDataSetChanged()不更新 ListView

转载 作者:行者123 更新时间:2023-12-01 12:02:34 25 4
gpt4 key购买 nike

我正在从 3 个不同的 xml feed 读取数据并在 ListView 中添加数据,获取过程运行三次以执行三个不同的异步任务。

这是我的onPostExecute代码,

if (fetchedData.isEmpty())
fetchedData = result;
else
fetchedData.addAll(result);

if (sAdapter == null) {
sAdapter = new SpecialAdapter(myapp.this, fetchedData,android.R.layout.simple_list_item_2, keys, ids);
setListAdapter(sAdapter);
} else {
sAdapter.notifyDataSetChanged();
}

上面代码中的fetchedData是一个ArrayList

上面的代码工作正常,并更新了所有 3 个提要的 listView。但是,一旦将所有三个提要的数据添加到 listView 中,我想在我的 ListView 中添加另一个 ArrayList 数据。

这意味着我想在加载所有提要时添加数据,因此我添加了 if block ,

if (//all feeds added in the list) {
Log.e("added","feeds added");
// add another ArrayList in my ListView here
// and update the List adapter
}

这是上述 if block 的实际代码,

if (count == feeds.length) {

Log.e("added","feeds added");
//adding another arrayList in list view ArrayList
fetchedData.addAll(test.secondryArray);
// checking if it is added (it is added successfully
Log.e("size of fetchedData",fetchedData.size + "");
// update the adapter
sAdapter.notifyDataSetChanged();
}

if block 中,我在 ListView 数组列表中添加了一个新的 arraylist 并更新了 SimpleAdapter,但数据未在 ListView< 中显示 由于某种原因。我首先认为数据没有添加到 test.secondaryArrayfetchedData 数组中,但事实并非如此,因为数据已成功添加到 fetchedData 中数组,但适配器未更新。

这是我完整的 inPostExecute 代码,

if (fetchedData.isEmpty())
fetchedData = result;
else
fetchedData.addAll(result);

String[] keys = { GetFeeds.KEY_TITLE, GetFeeds.KEY_DATE};
int[] ids = { android.R.id.text1, android.R.id.text2 };

// KEY_TITLE = text1
// KEY_DATE = text2

if (sAdapter == null) {
sAdapter = new SpecialAdapter(myapp.this, fetchedData,android.R.layout.simple_list_item_2, keys, ids);
setListAdapter(sAdapter);
} else {
sAdapter.notifyDataSetChanged();
}

if (count == feeds.length) {
Log.e("added","feeds added");
//adding another arrayList in list view ArrayList
fetchedData.addAll(test.secondryArray);
// checking if it is added (it is added successfully
Log.e("size of fetchedData",fetchedData.size + "");
// update the adapter
sAdapter.notifyDataSetChanged();
}

为什么在加载所有提要后添加新数据后我的 lsitview 没有更新?

编辑:如果我在 if block 之外做同样的事情,那么它可以工作,但不能在 if block 内工作,但这不是我想要的,因为我希望此代码仅在以下情况下执行所有提要均在此之前添加。

最佳答案

一种可能性是,第一次调用此方法时,您尝试使用 MainThread (UIThread) 来通知 ListView ,而在第二种情况下(if 条件成立),您正在使用后台线程来通知 ListView 。

关于java - 添加数据时notifyDataSetChanged()不更新 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27886963/

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