Listview嵌套一个Gridview,Gridview负责异步加载网路图片,结果出现图片显示错位 异步listviewgridviewandroid 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在getView()中是不是优化了adapter?而且是类似于这么写的?if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item, null); ((TextView) convertView.findViewById(R.id.text1)).setText(mData[position]); } else return convertView;没有通过tag方式来设置并获取当前数据。 谢谢你的回复,这是我的gridview的adapter的getView方法@Override public View getView(int position, View convertView, ViewGroup parent) { holder=null; if(convertView==null){ convertView=inflater.inflate(R.layout.gridview_item, null); holder=new Holder(); holder.view=(ImageView) convertView.findViewById(R.id.imageView1); convertView.setTag(holder); }else{ holder=(Holder) convertView.getTag(); } String pic_url=timeLineImage.get("picUrl"+position); holder.view.setTag(pic_url);// ImageLoader.getInstance().displayImage(pic_url, holder.view, options); ImageLoader.getInstance().displayImage(pic_url, holder.view, options,new LoadListener()); //setImage(holder.view,pic_url); return convertView; } holder 不要设置为全局变量,设为局部变量吧 3楼正解,你每次调用getView花每项item的时候都是一直在修改同一个ViewHolder,ViewHolder类里面的那些控件都是指向的同一个引用。建议,在getView放法中创建ViewHolder对象 虽然楼主把viewHolder做成了全局变量,但是每次getView时都置成空了,所以应该不是这个关系,如果是之前的图片在滑动到下面后又出现了然后再变成新的图片,这个就是convertView的问题,这个convertView的原理就是把原来的View重复使用的,所以会出现之前的图片,然后被新的图片取代 是不是在子线程中有notifydatasetchanged()??? 把ViewHolder設置成局部變量即可。如你代碼,在getView方法中你每次加載一個Item的時候都會修改同一個ViewHolder,這樣會導致顯示混亂。 关于Android闹钟的一个问题 android如何加入文字跟图片? 高分悬赏!!!android按键分发问题 ndk编译skia静态库 请教 android怎么让控件背景透明呢? QQ的桌面图标、来电通的流量指示器是用什么控件做的? Android 用户远程验证 请问为什么我的程序不能返回最后退出的界面? android 遮挡层实现 SwipeRefreshLayout无法进行左右手势判断 android webview 排版问题 关于同时包含file和JSON的POST方法
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
((TextView) convertView.findViewById(R.id.text1)).setText(mData[position]);
}
else
return convertView;
没有通过tag方式来设置并获取当前数据。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
holder=null;
if(convertView==null){
convertView=inflater.inflate(R.layout.gridview_item, null);
holder=new Holder();
holder.view=(ImageView) convertView.findViewById(R.id.imageView1);
convertView.setTag(holder);
}else{
holder=(Holder) convertView.getTag();
}
String pic_url=timeLineImage.get("picUrl"+position);
holder.view.setTag(pic_url);
// ImageLoader.getInstance().displayImage(pic_url, holder.view, options);
ImageLoader.getInstance().displayImage(pic_url, holder.view, options,new LoadListener());
//setImage(holder.view,pic_url);
return convertView;
}