方法1(ps:这个挺好用的)
- 先从ListView属性出发,设置它为单选 (一定要设置)
//设置它为单选
android:choiceMode="singleChoice"
<ListView
android:id="@+id/lv_left"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2.5"
android:layout_gravity="center"
android:background="#ffffff"
android:listSelector="@drawable/drawable_listview"
android:choiceMode="singleChoice"
android:scrollbars="none">
</ListView>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_item_list_view_classif"
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:textColor="@drawable/drawable_list_view_text"
android:text="测试"/>
</LinearLayout>
- drawable_list_view_text的布局文件(网上有好多给drawable文件里面设置多余属性android:state_activated="true"这个就够了)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:color="@color/red"/>
<item android:color="@color/black"/>
</selector>
- 给ListView一个默认选项(setItemChecked(int position,boolean,checked))
setItemChecked(int position,boolean)
//给ListView一个默认选项
listView.setItemChecked(0,true);
方法2
在Adapter里面一定要写上这句话
//设置选中效果
if (selectedPosition == position){
tvContent.setTextColor(Color.RED);
}else {
tvContent.setTextColor(Color.BLACK);
}
- 在Activity或Fragment里面调用一句话
//刷新
lvdapter.notifyDataSetChanged();
- Adapter源码,Adapter继承BaseAdapter
public class ClassificationFragmentListViewAdapter extends BaseAdapter{
Context context;
String[] list;
private int selectedPosition = -1;
public void setSelectedPosition(int position) {
selectedPosition = position;
}
public ClassificationFragmentListViewAdapter(Context context, String[] list) {
this.context = context;
this.list = list;
}
/*
*listView中显示的数据个数
*/
@Override
public int getCount() {
return list.length;
}
/*
*根据position获取一个listView中一个item对象
*/
@Override
public Object getItem(int position) {
return list[position];
}
/*
*根据position获取一个listView中一个item位置
*/
@Override
public long getItemId(int position) {
return position;
}
/*
*绘制视图--1.创建视图,2.初始化控件,3.填充数据
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//第一步 创建视图 建一个XML文件
//实例化View对象
View view = LayoutInflater.from(context).inflate(R.layout.item_list_view_classification, null);
//第二步
//初始化控件
TextView tvContent = (TextView) view.findViewById(R.id.tv_item_list_view_classif);
//第三步 先获取数据
//通过position获取要填充的数据(list的item的值)
String contrnt =list[position];
//设置选中效果
if (selectedPosition == position){
tvContent.setTextColor(Color.RED);
}else {
tvContent.setTextColor(Color.BLACK);
}
//将数据显示在控件上
tvContent.setText(contrnt);
return view;
}
}
网友评论