gpt4 book ai didi

java - 尝试更新 ListView 时如何修复 IllegalStateException 错误?

转载 作者:行者123 更新时间:2023-12-02 08:33:05 24 4
gpt4 key购买 nike

我正在尝试运行此代码,但当我运行此代码时,我收到一个 IllegalStateException,表示未通知 ListView 的内容,但在更新数据时我收到了通知。这是一个自定义 ListView 适配器。这是我的代码的相关部分:

class LoadingThread extends Thread {
public void run() {
int itemsOriginallyLoaded = 0;
synchronized( items ) {
itemsOriginallyLoaded = items.size();
}
for( int i = itemsOriginallyLoaded ; i < itemsToLoad ; ++i ) {
Log.d( LOG_TAG, "Loading item #"+i );
//String item = "FAIL";
//try {
String item = "FAIL";
try {
item = stockGrabber.getStockString(dataSource.get(i));
} catch (ApiException e) {
Log.e(LOG_TAG, "Problem making API request", e);
} catch (ParseException e) {
Log.e(LOG_TAG, "Problem parsing API request", e);
}
//} catch (ApiException e) {
// Log.e(TAG, "Problem making API request", e);
//} catch (ParseException e) {
// Log.e(TAG, "Problem parsing API request", e);
//}
synchronized( items ) {
items.add( item );
}
itemsLoaded = i+1;
uiHandler.post( updateTask );
Log.d( LOG_TAG, "Published item #"+i );
}
if( itemsLoaded >= ( dataSource.size() - 1 ) )
allItemsLoaded = true;
synchronized( loading ) {
loading = Boolean.FALSE;
}
}
}

class UIUpdateTask implements Runnable {
public void run() {
Log.d( LOG_TAG, "Publishing progress" );
notifyDataSetChanged();
}
}

最佳答案

我不知道什么是元素。如果 items 是 ArrayAdapter,则您无法从后台线程(无论是您派生的线程还是 AsyncTask)安全地修改 ArrayAdapter 的内容.

关于java - 尝试更新 ListView 时如何修复 IllegalStateException 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756122/

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