方法1(ps:這個挺好用的)
- 先從ListView屬性出發(fā),設(shè)置它為單選 (一定要設(shè)置)
//設(shè)置它為單選
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>
- 設(shè)置它的item布局的selector:
<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文件里面設(shè)置多余屬性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里面一定要寫上這句話
//設(shè)置選中效果
if (selectedPosition == position){
tvContent.setTextColor(Color.RED);
}else {
tvContent.setTextColor(Color.BLACK);
}
- 在Activity或Fragment里面調(diào)用一句話
//刷新
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];
//設(shè)置選中效果
if (selectedPosition == position){
tvContent.setTextColor(Color.RED);
}else {
tvContent.setTextColor(Color.BLACK);
}
//將數(shù)據(jù)顯示在控件上
tvContent.setText(contrnt);
return view;
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。