Android:GridView中實現點擊Item變色,再點擊還原。


使用GridView時想實現點擊其中的一個Item,該Item改變背景,再次點擊Item變回原來的背景,網上搜了很多資料都沒有看到類似的案例,但還是有所啟發,現來分享我的做法。

首先,首先為GridView自定義adapter適配器,繼承BaseAdapter類。

實現效果的重要因素如下,為item設置一個標記點擊狀態的數組。

public class gridAdapter extends BaseAdapter { final itemLength = 16; private LayoutInflater layoutInflater; private List<String> gridDataList = new ArrayList<>(); private int clickTemp = -1;//標識被選擇的item private int[] clickedList=new int[itemLength];//這個數組用來存放item的點擊狀態 private Context c; gridAdapter(Context context){ c = context; layoutInflater = LayoutInflater.from(context); for (int i =0;i<itemLength;i++){ clickedList[i]=0; //初始化item點擊狀態的數組 } } ---------- 以下代碼省略 ---------- }

然后在定義的adapter中寫一個方法,用於識別當前被選擇的item

    public void setSeclection(int posiTion) { clickTemp = posiTion; }

在setOnItemClickListener中.將點擊的Item位置通過setSeclection( )傳到adapter。

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { gridadapter.setSeclection(position); gridadapter.notifyDataSetChanged(); } });

 

接下來adapter中很重要的重載方法getView()。

   @Override public View getView(int position, View convertView, ViewGroup parent) { //..................代碼省略 if(clickTemp==position){ //根據點擊的Item當前狀態設置背景 if (clickedList[position]==0){ convertView.setBackgroundColor(Color.BLUE); clickedList[position]=1; } else { convertView.setBackgroundColor(Color.TRANSPARENT); clickedList[position]=0; } } //..................代碼省略 }

提醒:不要忘了notifyDataSetChanged(),否則點擊效果不會顯示。 
在修改適配器綁定的數據后,利用notifyDataSetChanged()刷新Item。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM