实现点击ListView某一item项的选中效果

1 设置ListView的监听,在监听中记录点击的位置,并刷新适配器,adapter.notifyDataSetChanged(),会调用适配器的getView()方法。

private int currentPosition;

listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                //变色
                currentPosition = position;
                adapter.notifyDataSetChanged();
              
            }
        });

2 item项的布局文件

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:enabled="false"
    android:drawableLeft="@drawable/leftmenu_item_selector"
    android:padding="20dp"
    android:drawablePadding="20dp"
    android:text="新闻"
    android:textSize="23sp"
    android:textColor="@drawable/leftmenu_item_textcolro_selector"
    >

</TextView>

其中 leftmenu_item_selector和 leftmenu_item_textcolro_selector选择器 使用enable属性

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/menu_arr_normal"/>
    <item android:state_enabled="true" android:drawable="@drawable/menu_arr_select"/>

</selector>


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="@android:color/white"/>
    <item android:state_enabled="true" android:color="@android:color/holo_red_light"/>

</selector>

3 在ListView适配器的getView()方法中实现ListView某一item项的选中效果

 @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            ViewHolder viewHolder;
            if (convertView == null)
            {
                viewHolder = new ViewHolder();
                convertView = View.inflate(MainActivity.this, R.layout.item_main, null);
                viewHolder.tv_item_title = (TextView) convertView.findViewById(R.id.tv_item_title);
                convertView.setTag(viewHolder);

            }
            else
            {
                viewHolder = (ViewHolder) convertView.getTag();
            }


            NewsCenterBean.DataBean dataBean = data.get(position);
            viewHolder.tv_item_title.setText(dataBean.getTitle());

            if (curPosition == position)
            {
                viewHolder.tv_item_title.setEnabled(true);
            }
            else
            {
                viewHolder.tv_item_title.setEnabled(false);
            }
            return convertView;
        }

        class ViewHolder
        {
            TextView tv_item_title;
        }



猜你喜欢

转载自blog.csdn.net/li_huai_dong/article/details/72330007