gpt4 book ai didi

java - For循环在Android中被遗漏

转载 作者:行者123 更新时间:2023-11-30 03:58:04 26 4
gpt4 key购买 nike

我在 Android 中有一个 Activity ,它获取网络服务的结果并将其放入适配器以显示项目列表。我为此创建了一个名为 OnLoadCompleteListener 的监听器接口(interface),我的此 Activity 的监听器看起来像

mListener = new OnLoadCompleteListener() {

@Override
public void onPostExecute(RootWebService service) {
if(service instanceof WebService) {
//gets the number of items
int total = ((WebService) service).getCount();
for(int i=0; i<total; ++i) {
//Log.d("ITEM", "inserting " + i);
Item item = ((WebService) service).get(i);
//our adapter class automatically receives items
mAdapter.addItem(item);
}
}
}
};

现在这是奇怪的一点:监听器被击中,total 被设置为 12(我要求的项目数)然后 for 循环被完全绕过。适配器保持空白,屏幕几乎不显示任何内容。

但是,如果注释掉的 Log.d(...) 调用处于 Activity 状态,则循环有效。

为什么?回调从 UI 线程运行,getCount() 方法返回正确的值,并且此适配器以前工作过。到底发生了什么?

对了,mAdapter是我专门写的Adapter的子类实例,addItem(Item)方法看起来像这样:

public synchronized void addItem(Item item) {
mItems.add(item);
notifyDataSetChanged();
}

mItems 正是您所期望的。

最佳答案

我相信您需要执行类似 invalidate 的操作或类似的操作,这几乎只是刷新适配器中的数据。

我认为是这个。

myListView.getAdapter().notifyDataSetChanged();

如果这不起作用,那可能是...

myListView.invalidate();

关于java - For循环在Android中被遗漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13029527/

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