实现动态修改ListView中某个Item里的组件值

1.理解ListView及GridView视图复用的机制Adapter+静态ViewHolder的方式可以参照

http://www.myandroidsolutions.com/2012/07/19/android-listview-with-viewholder-tutorial/

2.GridView防止内存溢出问题实现的视图复用的方法,只创建当前屏幕所显示的几条内容View,不会为每条内容都创建视图

在定义ViewHolder时多添加一个参数tag

public static class ViewHolder{

                   ImageViewmagazine_item_foreground_image;

                   ImageViewmagazine_item_free_image;

                   ImageViewmagazine_item_image;

                   TextViewcolumnName;

                   Stringtag;

}

在自定义BaseAdapter类中自定义Adapter中执行getView方法返回视图为ViewHolder中的tag指定唯一标识值

@Override

public View getView(int position, ViewconvertView, ViewGroup parent) {

columnView.tag = period(杂志id);

return convertView;

}

在更新GridView时,获取GridView上显示的复用视图,判断更新的杂志period是否与上边为ViewHolder设置tag值一样,若是同一本杂志的id,则更新ViewHolder中缓存的视图

         /**

          * 更新某一条内容

          * @param period  //杂志id

          * @param periodName //杂志名称

          */

         publicvoid updateMagazineItem(String period, String periodName){

                   //获取GridView复用的视图

                   for(inti=0; i<mGridView.getChildCount(); i++){

                            //判断View上缓存设置的ViewHolder的tag是否和需要更新的杂志id一样

                            if(((ViewHolder)mGridView.getChildAt(i).getTag()).tag.equals(period)){

                                     //更新需要更新的View

                                     if(Constants.downloadingmagazines.get(period)!= null){

                                               ((ViewHolder)mGridView.getChildAt(i).getTag()).columnName.setText(R.string.downloading);

                                     }else{

                                               ((ViewHolder)mGridView.getChildAt(i).getTag()).columnName.setText(periodName);

                                     }

                            }

                           

                   }

         }

在视图上只需要更新GridView中的几条显示的内容View,所以通过循环判断也不会太耗时,直接在UI线程处理即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值