adapter适配器缓存
来源:互联网 发布:女司机歧视知乎 编辑:程序博客网 时间:2024/06/06 14:25
针对内容显示每个item显示时都会触发适配器的getView,如果每次都加载布局会导致资源浪费,所以要灵活运用getView方法中的convertView
/** * 第二个参数表示上一个使用过的视图(上一个从getView返回出去的内容) */ @Override public View getView(int position, View convertView, ViewGroup parent) { FileItem item = files[position]; ViewHolder holder; if (null == convertView) { Log.e("m_tag", "getView inflate==>" + position); // 加载布局(new布局对象) convertView = mInflater.inflate(R.layout.file_item_layout, null); holder = new ViewHolder(); holder.iv = (ImageView) convertView.findViewById(R.id.item_icon); holder.tv = (TextView) convertView.findViewById(R.id.item_name); //可以将holder对象标记到convertView上 convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } // 关联数据源和布局 holder.iv.setImageResource(item.getIconRes()); holder.tv.setText(item.getFileName()); return convertView; }其中ViewHolder是我们自定义的一个类,记录每个item的布局中显示内容的那些关键的视图 class ViewHolder { ImageView iv; TextView tv; }
Item监听
可以使用OnItemClickListener监听AdapterView的item被点击情况
private OnItemClickListener onItemClick = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // FileItem item = (FileItem) parent.getItemAtPosition(position); FileItem item = (FileItem) adapter.getItem(position); Log.e("m_tag","点击的位置:"+item.getPath()); } };
设置item的点击监听
lv = (ListView) findViewById(R.id.m_list); //设置点击监听(对其中的item) lv.setOnItemClickListener(onItemClick);
长按监听
private OnItemLongClickListener onItemLongClick = new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { Log.e("m_tag","点击的位置:"+position); return true; } };
设置长按监听
lv.setOnItemLongClickListener(onItemLongClick);
适配器刷新
//适配器刷新(会导致当前屏幕上的item的getView、getCount重新执行)adapter.notifyDataSetChanged();
适配器中item布局焦点问题
Android中这些控件会主动获取焦点:Button、EditText、CheckBox、RadioButton、ImageButton,一般在列表中会抢走焦点使得item的点击或者长按无效
解决方式,需要在item的跟布局上使用android:descendantFocusability该属性取值:
beforeDescendants:ViewGroup会优先于孩子获得焦点 afterDescendants:ViewGroup的孩子优先于ViewGroup获得焦点 blocksDescendants:让ViewGroup可以直接得到焦点 一般用第三种 android:descendantFocusability="blocksDescendants"
0 0
- adapter适配器缓存
- 适配器Adapter
- Adapter适配器
- Adapter(适配器)
- 适配器[Adapter]
- 适配器(Adapter)
- 适配器--Adapter
- 适配器-Adapter
- 适配器Adapter
- 适配器 adapter
- 适配器(Adapter)
- Adapter适配器
- 适配器 Adapter
- 适配器Adapter
- 适配器 Adapter
- 适配器Adapter
- adapter(适配器)
- 适配器adapter
- Centos6.8下安装MySQL5.7.17
- java服务器端接收json格式传递的参数
- 运维小白的python之路(五)——模块
- IBM Cognos Configuration 服务器配置
- 实践之数据竞赛的套路
- adapter适配器缓存
- 输出所有可能的全排列
- 虚析构函数
- 证书转换-SSL证书生成:cer,jks文件 韩俊强的博客
- CUDA By Examples 3
- 正则表达式的gmi
- 关于js的parseInt() 函数
- Android图片加载框架,Glide的简单用法
- hihoCoder 1078 : 线段树的区间修改