当前位置: 代码迷 >> Android >> 线程 获取 控件有关问题!
  详细解决方案

线程 获取 控件有关问题!

热度:385   发布时间:2016-04-28 06:11:34.0
线程 获取 控件问题!!!
本帖最后由 parcool 于 2014-03-28 19:08:35 编辑


class MyListAdapter extends BaseAdapter{
//其余方法省略

public View getView(int position, View convertView, ViewGroup parent) {
//获取convertView省略
//ViewHolder是一个放着各种控件名的类
viewHolder= new ViewHolder();
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
new Thread(){
@Override
public void run() {
super.run();
Bitmap bitmap = SystemTools.getHttpBitmap(imageURI);
//问题在这里!由于bitmap是一个耗时工作
//所以,就用了一个线程来获取bitmap
//但获取之后,发送handler怎么来确定哪个viewHolder.imageView设置这个bitmap?
//因为在这里面,viewHolder是获取不了的。
//比如:viewHolder.imageView.setImageBitmap = bitmap;这句就提示viewHolder有问题
//如果用handler那怎么发送?
//我之前定义了一个全局的List<ImageView> list,用来在findViewById的下一句就添加到list里
//然后我在handler方法里for这个list来设置。(当然,我也把bitmap类似list放到listBitmap里了)
//但是这样就成了死循环,handler里更新ImageView的setImageBitmap就会重复调用当
//前的public View getView(int position, View convertView, ViewGroup parent) ,成了死循环
//要怎么做才能搞定呢????
}
}
}
}

------解决方案--------------------
线程启的多点了吧
------解决方案--------------------
你把 imageview 也传给那个下载线程就完了
------解决方案--------------------
可以用异步任务 在构造方法中传递控件的引用和url
------解决方案--------------------
解决了就好啊,解决了就已经不是新手了
------解决方案--------------------
你是怎么做的?我觉得也应该启动一个异步任务,异步任务好控制一点。不知道说的对不对?
------解决方案--------------------
我感觉这里应该是异步加载吧,不能写在BaseAdapter里面把,,,
------解决方案--------------------
建议还是用异步来处理吧,一张图片还可以,图片多了网络不好,你这样加载就太影响ui效果了。
------解决方案--------------------
给点分,没分了
  相关解决方案