方法1(ps:這個挺好用的)
- 先從ListView屬性出發(fā)廉丽,設置它為單選 (一定要設置)
//設置它為單選
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的布局文件(網(wǎng)上有好多給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中顯示的數(shù)據(jù)個數(shù)
*/
@Override
public int getCount() {
return list.length;
}
/*
*根據(jù)position獲取一個listView中一個item對象
*/
@Override
public Object getItem(int position) {
return list[position];
}
/*
*根據(jù)position獲取一個listView中一個item位置
*/
@Override
public long getItemId(int position) {
return position;
}
/*
*繪制視圖--1.創(chuàng)建視圖况鸣,2.初始化控件,3.填充數(shù)據(jù)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//第一步 創(chuàng)建視圖 建一個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);
//第三步 先獲取數(shù)據(jù)
//通過position獲取要填充的數(shù)據(jù)(list的item的值)
String contrnt =list[position];
//設置選中效果
if (selectedPosition == position){
tvContent.setTextColor(Color.RED);
}else {
tvContent.setTextColor(Color.BLACK);
}
//將數(shù)據(jù)顯示在控件上
tvContent.setText(contrnt);
return view;
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者