Android ListView之高亮显示
来源:互联网 发布:国家质检总局网络培训 编辑:程序博客网 时间:2024/06/16 18:51
在ListView的使用过程,Android只提供了单击item显示高亮,却不能保持,本文介绍两种选中保持高亮的方法,仅供参考。先看效果图
方法一:图中list为方法1的实现,其核心思想为setTag(),
myList1.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubif( ( (ListView)parent ).getTag() != null){( (View)( ( ListView )parent ).getTag() ).setBackgroundDrawable(null);}( ( ListView )parent ).setTag(view);view.setBackgroundColor(Color.RED);}});当点击某个item的时候,先判断parent中是否有tag,如果有,将其背景设为空,然后给view标记tag,设置背景。根据Android源代码可知,该view是被点击的item。
public interface OnItemClickListener { /** * Callback method to be invoked when an item in this AdapterView has * been clicked. * <p> * Implementers can call getItemAtPosition(position) if they need * to access the data associated with the selected item. * * @param parent The AdapterView where the click happened. * @param view The view within the AdapterView that was clicked (this * will be a view provided by the adapter) * @param position The position of the view in the adapter. * @param id The row id of the item that was clicked. */ void onItemClick(AdapterView<?> parent, View view, int position, long id); }
此方法极为简单。
方法二:图中name为方法2的实现,其核心是自定义adapter适配器,其优点是比较灵活。
package com.example.listviewtest;import java.util.HashMap;import java.util.List;import android.content.Context;import android.graphics.Color;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class MyAdapter extends BaseAdapter {private LayoutInflater mInflater;private int selectItem=-1;List<HashMap<String,String>> myList;public MyAdapter(Context context,List<HashMap<String,String>> myList){this.mInflater = LayoutInflater.from(context);this.myList=myList;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn myList.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn myList.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public void setSelectItem(int selectItem){this.selectItem = selectItem;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder;if(convertView == null){holder=new ViewHolder();convertView=mInflater.inflate(R.layout.holder_layout, null);holder.textName=(TextView)convertView.findViewById(R.id.name);convertView.setTag(holder);}elseholder = (ViewHolder)convertView.getTag();holder.textName.setText(myList.get(position).get("NAME"));if(position == selectItem)convertView.setBackgroundColor(Color.YELLOW);elseconvertView.setBackgroundColor(Color.TRANSPARENT);return convertView;}static class ViewHolder{TextView textName;}}
代码中List<>类型可根据实际需求来修改。该段代码的核心部分是getView().也是用setTag方式来实现,这里面一个重要参数为convertView,当某个item在滑动过程中被移除屏幕,Android会回收这个item的view,就是这个convertView,当有item被移出屏幕时,我们会new一个新的view给新显示的item,如果我们能使用convertView,则能节省大量内存开销,
ListViewTest
0 0
- Android ListView之高亮显示
- android listView 高亮显示
- android下实现ListView高亮显示
- android下实现ListView高亮显示
- Android ListView item 选中高亮显示
- Android ListView 搜索关键字高亮显示
- android listView点击item,高亮显示
- Android ListView item 选中高亮显示之高效实现方式
- android 取消ListView里的item高亮显示效果
- 最简便实现Android ListView选中item高亮显示
- Android ListView 高亮显示选中的item
- android listview选中某一行,成选中状态颜色高亮显示,ListView的UI显示中常见问题及解决办法
- android listview 一行高亮
- listview 选中高亮显示实现方法
- listview 选中高亮显示实现方法
- android listview选中某一行,成选中状态颜色高亮显示
- android listview选中某一行,成选中状态颜色高亮显示
- Android编程心得-ListView的Item高亮显示的办法
- 本人的嵌入式职业英文记录 - 第1周
- Linux设备口
- 从接口与抽象类说起
- php迭代器模式
- 在Python2.7里安装SOAPpy和问题解决
- Android ListView之高亮显示
- input元素添加监听事件
- iOS高级编程之安全机制,为你的App保驾护航
- jQuery对象与DOM对象之间的转换方法
- linux下终端命令快捷键
- 删除所有表,所有试图,所有序列,所有存储过程
- 正则表达式
- Html5新属性audio音频和video视频的控制详解(controls)
- pageX、clientX、screenX、offsetX、layerX、x 在不同浏览器上的使用及区别