![](/img/trans.png)
[英]How to set ActionBar title from a getView method inside baseAdapter
[英]How to invoke the getView method in the baseAdapter in Android from another WebService Bean?
我的代碼中的適配器如下所示,我擴展了基本適配器:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder vHolder;
// if (convertView == null) {
vHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.home_item, null);
vHolder.albumIcon = (ImageView) convertView
.findViewById(R.id.albumIcon);
try {
Bitmap icon = aws.getAlbumImg(itemInfolist.get(position)
.getAlbumInfoCol().get(0).getAlbumID(), 0);
if (icon != null) {
vHolder.albumIcon.setImageBitmap(icon);
} else {
vHolder.albumIcon.setImageBitmap(BitmapFactory.decodeResource(
context.getResources(), R.drawable.album));
}
} catch (Exception e) {
vHolder.albumIcon.setImageBitmap(BitmapFactory.decodeResource(
context.getResources(), R.drawable.album));
}
convertView.setTag(vHolder);
return convertView;
}
但是,我異步下載了imaging,
當調用位圖圖標= aws.getAlbumImg(itemInfolist.get(position).getAlbumInfoCol()。get(0).getAlbumID(),0);
一些未下載的圖片將使用默認圖像,這些圖片已下載到另一個Web Service Bean之后,我希望Web Service Bean發送一條消息以調用此適配器中的getView方法,以實現自動刷新功能。
但是,如果我按如下方式更改Web Service下載Bean,它將導致異常
03月19日07:46:33.241:錯誤/ AndroidRuntime(716):android.view.ViewRoot $ CalledFromWrongThreadException:只有創建視圖層次結構的原始線程才能觸摸其視圖。
HomeAdapter mHomeAdapter;
public AlbumWS(HomeAdapter homeAdapter) {
mHomeAdapter = homeAdapter;
}
And after download,
public boolean getAlbumImgWS(final ArrayList<Integer> albumIDs) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
AlbumInfoWS aiws = new AlbumInfoWS();
for (int i = 0; i < albumIDs.size(); ++i) {
if (ABSCENTALBUMIMGS.contains(albumIDs.get(i))) {
continue;
}
if (FunctionUtil.isExist(albumIDs.get(i))) {
continue;
}
String urlPath = aiws.getAlbumImage("en_US",
Config.IMG_ATTIBUTETYPE, albumIDs.get(i));
boolean ret = FunctionUtil.simpleDownload(Config.HOST
+ urlPath, "/data/data/com.greysh.amped/img/"
+ albumIDs.get(i) + ".jpg");
if (!ret) {
if (!ABSCENTALBUMIMGS.contains(albumIDs.get(i))) {
ABSCENTALBUMIMGS.add(albumIDs.get(i));
}
}
mHomeAdapter.notifyDataSetChanged();
}
}
}).start();
return true;
}
android.view.ViewRoot$CalledFromWrongThreadException:
Only the original thread that created a view hierarchy can touch its views.
此異常表示您正在嘗試從另一個線程更新UI-在Android中不允許這樣做。 您應該使用Handler
程序將更改發布到主UI線程。 代替
new Runnable() {
public void run() {
...
}
};
嘗試
mHandler.post(new Runnable() {
public void run() {
...
}
};);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.