第7篇.ListView相关

一、做listview的时候,遇到出现重复的view,比如总数为10,最大显示为5,则listview显示为1、2、3、4、5、1、2、3、4、5等循环的;我们需求的为显示1、2、3、4、5、6、7、8、9、10;主要是listview的缓存机制造成的,下面贴Adapter的getView()代码如下:

解析:把对控件setText的操作放到if (convertView == null) {}的外面来即可,否则会一直使用初始化的时候的那个值

</pre><p></p><p><span style="white-space:pre"></span></p><p></p><pre name="code" class="html">    public View getView(int position, View convertView, ViewGroup parent) {   
        // TODO Auto-generated method stub   
        Log.e("oydz", "position : " + position);  
        final int selectID = position;   
        ListItemView  listItemView = null;   
        if (convertView == null) {   
            listItemView = new ListItemView();    
            convertView = listContainer.inflate(R.layout.recordfile_listview_item, null);   

            listItemView.FileNum = (TextView)convertView.findViewById(R.id.item_num);   
//            //listItemView.FileNum.setText(position + 1 +"");
            
            listItemView.FileName = (TextView)convertView.findViewById(R.id.item_filename); 
//            //listItemView.FileName.setText(listFiles.get(position).getName());

            
            listItemView.FileSize = (TextView)convertView.findViewById(R.id.item_filesize);   
//            //listItemView.FileSize.setText(getFileSize(listFiles.get(position)));
 
            convertView.setTag(listItemView);   
        }else {   
            listItemView = (ListItemView)convertView.getTag();   
        }   
        listItemView.FileNum.setText(position + 1 +"");
        listItemView.FileName.setText(listFiles.get(position).getName());
        listItemView.FileSize.setText(getFileSize(listFiles.get(position)));
        return convertView;   
    } 

二、listview会遇到这样的情况,描述如下:

进入activity,listview默认第一项为选择状态(有焦点框),点击某个按钮,触摸(select)某个item焦点框依然存在,并且当某个item获得焦点时里面的子控件需要发生相关变化

遇到这种需求,最开始使用的方式是对listview控件的listSelector属性进行修改,但是在点击完之后,item背景颜色是变化了,但是里面的子控件不会保存变化;等等都没有达到想要的效果;最终的解决方式是在适配器里面,进行的;获取得到select的位置,之后在返回view的时候返回指定的形式即可(可能描述不清楚,见谅!),相关代码如下:

   public View getView(int position, View convertView, ViewGroup parent) {   
        // TODO Auto-generated method stub    
        final int selectID = position;   
        ListItemView  listItemView = null;   
        if (convertView == null) {   
            listItemView = new ListItemView();    
            convertView = listContainer.inflate(R.layout.lexus_videolist_item, null);   

            listItemView.Rlayout = (RelativeLayout)convertView.findViewById(R.id.mrelayout);   
            
            listItemView.FileNum = (TextView)convertView.findViewById(R.id.lexus_item_num);   
            //listItemView.FileNum.setText(position + 1 +"");
            
            listItemView.FileName = (TextView)convertView.findViewById(R.id.lexus_item_filename); 
            //listItemView.FileName.setText(listFiles.get(position).getName());

            
            listItemView.FileSize = (TextView)convertView.findViewById(R.id.lexus_item_filesize);   
            //listItemView.FileSize.setText(getFileSize(listFiles.get(position)));
 
            convertView.setTag(listItemView);   
        }else {   
            listItemView = (ListItemView)convertView.getTag();   
        }   
        //1:not same item
        File file = new File(listFiles.get(position));
        if(file != null){
        	listItemView.FileNum.setText(position + 1 +"");
        	listItemView.FileName.setText(file.getName());
        	listItemView.FileSize.setText(getFileSize(file));
        }
        //2:set Select item by man, not auto, fuck
        if(PlayListActivity.SelectPostion==position){
        	listItemView.Rlayout.setBackground(context.getResources().getDrawable(R.drawable.lexus_media_list_btn_p));
        	listItemView.FileNum.setTextColor(context.getResources().getColor(R.color.black));
        	listItemView.FileName.setTextColor(context.getResources().getColor(R.color.black));
        	listItemView.FileSize.setTextColor(context.getResources().getColor(R.color.black));
        } else {   
        	listItemView.Rlayout.setBackground(context.getResources().getDrawable(R.color.lucency));  
        	listItemView.FileNum.setTextColor(context.getResources().getColor(R.color.white));
        	listItemView.FileName.setTextColor(context.getResources().getColor(R.color.white));
        	listItemView.FileSize.setTextColor(context.getResources().getColor(R.color.white));
        }
        
        
        return convertView;   
    } 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值