1. 程式人生 > >實現listview條目點選後改變item背景顏色和字型顏色並保留

實現listview條目點選後改變item背景顏色和字型顏色並保留

  • 先上效果圖。
    這裡寫圖片描述

    • 其實實現是很簡單的在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更新
        }