實現listview條目點選後改變item背景顏色和字型顏色並保留
阿新 • • 發佈:2019-02-02
先上效果圖。
- 其實實現是很簡單的在item的佈局中設定背景顏色選擇器,當item被選中時就會改變背景顏色
- 字型顏色在listview的adapter這種進行設定,定義標記記錄當前被點選的item,分別設定字型顏色
- 還有一個要注意的細節是,當進入該頁面是就要實現第一個條目被點選的效果,就可以設定變數值,該值記錄的是預設要被點選的條目,同時在其他條目被點選的時候改變這個變數
說了這麼多還是直接上程式碼吧,下面這是listview的佈局檔案
<ListView android:id="@+id/list_view" android:layout_width="100dp" android:choiceMode="singleChoice" android:layout_height="match_parent" android:divider="#00000000"/>
這是adpater部分
class BrandListAdapter extends BaseAdapter { private Context mContext; private List<BrandTypeBean.BrandBean> mBrand; public BrandListAdapter(Context context, List<BrandTypeBean.BrandBean> brand) { mContext = context; mBrand = brand; } @Override public int getCount() { return mBrand.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { View listview = View.inflate(mContext, R.layout.brand_list_item, null); TextView textView = (TextView) listview.findViewById(R.id.brand_type); textView.setText(mBrand.get(i).key); if (i == currentItem) { listview.setBackgroundResource(R.drawable.item_selected_bg); textView.setTextColor(Color.RED); }else { listview.setBackgroundResource(R.drawable.item_selected_normal); textView.setTextColor(Color.GRAY); } return listview; } }
設定listview的點選事件,改變當前被點選的position
`int currentItem = 0; //當前被選中的item位置` @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { currentItem = i; //重新賦值 mBrandListAdapter.notifyDataSetChanged(); //通知adapter更新 }