Android listview 一行高亮

Urchindong 2011-08-01

listview这个控件,对于已经学过Android的朋友是很熟悉的,应该不需要我在此来讲述下吧。

举个简单的例子来回顾下吧。我们知道在我们手机上,通讯录是这样布局的,一行分为姓名和对应的号码,或者是姓名在上,对应的号码在姓名的下面。我简要说明一下思路吧,在编码实现时,我们需要先创建LinearLayout(当然啦,也可以在xml文件中布局)对象和ListView对象,LinearLayout用来显示ListView,接着通过ListAdapter将获取到的通讯录数据与ListView链接起来;接着将ListAdapter添加到ListView中;最后将ListView添加到LinearLayout中,让屏幕显示LinearLayout,要处理ListView事件,需要为ListView视图添加setOnItemSelectedListener监听以及setOnItemClickListener监听。注意,不要忽略了权限哦。在API文档中,Dev Guide一栏下,看左侧栏目,往下拉,找到<uses-permission>就可以了,涵盖了android手机中所使用的所有权限。

        以上是我们自己简单的创建的,但在开发中,我们有时需要自己来设计自己所需要的布局。这时就需要继承BaseAdapter,重写它的getView方法。代码如下参照下吧:

        

        public class MyAdapter extends BaseAdapter {  
        private LayoutInflater mInflater;  
        public MyAdapter(Context context) {  
            this.mInflater = LayoutInflater.from(context);  
        }  
        public int getCount() {   
            return mData.size();  
        }  
        public Object getItem(int arg0) {   
            return mData.get(arg0);  
        }  
        public long getItemId(int arg0) {   
            return arg0;  
        }  
        public View getView(int position, View convertView, ViewGroup parent) {  
            ViewHolder holder = null;  
            if (convertView == null) {  
                holder = new ViewHolder();  
                convertView = mInflater.inflate(R.layout.leftview, null);  
                holder.titleText = (TextView) convertView.findViewById(R.id.titleleftlist);  
                holder.infoText = (TextView) convertView.findViewById(R.id.infoleftlist);  
                  
                convertView.setTag(holder);           
            } else {  
                holder = (ViewHolder) convertView.getTag();  
            }  
              
            holder.titleText.setText((String) mData.get(position).get("title"));  
            holder.infoText.setText((String) mData.get(position).get("info"));            
              
            if (position == selectItem) {  
                convertView.setBackgroundColor(Color.RED);  
            }
   
            else {  
                convertView.setBackgroundColor(Color.TRANSPARENT);  
            }
     
              
            //convertView.getBackground().setAlpha(80);   
              
            return convertView;  
        }  
        public  void setSelectItem(int selectItem) {  
             this.selectItem = selectItem;  
        }  
        private int  selectItem=-1;  
    }  

很容易就能看出来有个position,只要拥有这个position,那很容易解决了。就是红色标注的if(){}else{}中的语句。简单吧。

相关推荐

开发中的点点滴滴 / 0评论 2018-03-30