做Android開發兩年的時間,技術稍稍有一些提升,剛好把自己實現的功能寫出來,記錄一下,如果能幫助到同行的其他人,我也算是做了件好事,哈哈!!廢話不多說,先上個圖。
先上一段代碼:
1 if (lastposition == position){ 2 viewHolder.setImageResource(R.id.iv_yuandian1,R.mipmap.ic_button_checked); 3 } else { 4 viewHolder.setImageResource(R.id.iv_yuandian1,R.mipmap.ic_button_unchecked); 5 }
我先在Adapter中記錄一下默認的位置,因為本人在項目中搭建了一個ListViewAdapter的抽象類,所以每次在使用時只需要直接在Activity中new一下,然后直接在方法里面設置文本內容或者圖片資源(如上面的代碼的寫法),以后會跟大家分享這個抽象類,當然,這個抽象類還是在高手的指導下完成的,大伙可以忽略我這種寫法,就按照正常的BaseAdapter上面寫就行了。扯遠了,說回主題。其實整個功能的主要部分在ListView的Item點擊事件中,其主要代碼如下:
1 lv_choosecompany.setOnItemClickListener(new AdapterView.OnItemClickListener() { 2 @Override 3 public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 4 //把當前選中的條目加上選中效果 5 old_imageView = (ImageView) view.findViewById(R.id.iv_yuandian1); 6 old_imageView.setImageResource(R.mipmap.ic_button_checked); 7 8 new_imageView = (ImageView)view.findViewById(R.id.iv_yuandian1); 9 if (lastposition != -1 && lastposition != position){ 10 //如果已經單擊過條目並且上次保存的item位置和當前位置不同 11 new_imageView.setImageResource(R.mipmap.ic_button_unchecked);//把上次選中的樣式去掉 12 } 13 new_imageView = old_imageView;//把當前的條目保存下來 14 lastposition = position;//把當前的位置保存下來 15 16 listViewAdapter.notifyDataSetChanged(); 17 18 } 19 20 });
整體流程差不多就是這個樣子,如果想保留選中以后的文本信息,只需要在點擊的時候,將TextView的內容保存下來即可,這里就不在展示代碼,不足的地方還請同行們多多指教。