ListView item被選中時顏色的變化
阿新 • • 發佈:2019-01-23
在使用ListView的時候,有時是在item被選中時,字型顏色的變化,鬆開跳轉了之後就還原顏色,這時怎麼做呢
1、在介面卡的getView 方法:
@Override public View getView(int position, View convertView, ViewGroup parent) { final ViewH mViewH; if (convertView == null) { convertView = View.inflate(mContext, R.layout.selectorphone_adapter, null); mViewH = new ViewH(); mViewH.txt1 = (TextView) convertView.findViewById(R.id.txt1); convertView.setTag(mViewH); } else { mViewH = (ViewH) convertView.getTag(); } mViewH.txt1.setText(mArrayList.get(position).get("txt1").toString()); // 點選Item跳轉是重新整理介面卡,改回原來的顏色。 if (position == selectItem) { mViewH.txt1.setTextColor(Color.BLACK); } mViewH.txt1.setTextColor(Color.BLACK); //按下Item時設定為你想要的顏色。 convertView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case KeyEvent.ACTION_DOWN: mViewH.txt1.setTextColor(Color.GREEN); Log.i("TAG", "ACTION_DOWN"); break; } return false; } }); return convertView; }
/2、但是又問題,為什麼不直接在case KeyEvent.ACTION_UP:處還原呢,哈哈哈,事件傳不到哪了,所以給ListView設定監聽事件吧
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mSelectorphone_Adapter.setSelectItem(position); mSelectorphone_Adapter.notifyDataSetChanged(); Intent intent = new Intent(this, Switchphone_Act.class); intent.putExtra("name", mArrayList.get(position)); startActivity(intent); }
/3、再有
// 點選Item跳轉是重新整理介面卡,改回原來的顏色。
這個程式碼上面有了
if (position == selectItem) {
mViewH.txt1.setTextColor(Color.BLACK);
}
然後在再,介面卡裡面寫這個這個方法:
public void setSelectItem(int selectItem) {
this.selectItem = selectItem;
}
哈哈哈哈,搞定了!