PoiListAdapter poiListAdapter = new PoiListAdapter(this, mAllPoi); // 把poi结果添加到适配器 mPoiList.setAdapter(poiListAdapter); 我使用new Thread的话,这个adapter 的this,就不对了
时间: 2024-03-28 12:41:53 浏览: 43
poi-5.2.1.jar中文文档.zip
5星 · 资源好评率100%
你可以在创建PoiListAdapter时,将当前Activity的上下文(Context)传递给它,而不是使用`this`。因为在`new Thread()`中,`this`指向的是Thread对象,而不是Activity对象。
以下是修改后的代码示例:
```
new Thread(new Runnable() {
@Override
public void run() {
// 在子线程中执行网络请求等耗时操作
// ...
// 将结果添加到适配器
runOnUiThread(new Runnable() {
@Override
public void run() {
PoiListAdapter poiListAdapter = new PoiListAdapter(YourActivity.this, mAllPoi);
mPoiList.setAdapter(poiListAdapter);
}
});
}
}).start();
```
在这个示例中,我们使用`YourActivity.this`代替`this`来传递当前Activity的上下文。在子线程中完成耗时操作后,我们使用`runOnUiThread`方法将结果添加到适配器,并在主线程中更新UI。这样可以确保更新UI的操作在主线程中执行,避免出现异常。
阅读全文