热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第7篇.ListView相关

一、做listview的时候,遇到出现重复的view,比如总数为10,最大显示为5,则listview显示为1、2、3、4、5、1、2、3、4、5等循环的;我们需求的为显示1、2、3、4、5、6、7、

一、做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) {}的外面来即可,否则会一直使用初始化的时候的那个值

    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;
}





推荐阅读
author-avatar
嗯明天娶你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有