做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點擊事件中,其主要代碼如下:
lv_choosecompany.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { //把當前選中的條目加上選中效果 old_imageView = (ImageView) view.findViewById(R.id.iv_yuandian1); old_imageView.setImageResource(R.mipmap.ic_button_checked); new_imageView = (ImageView)view.findViewById(R.id.iv_yuandian1); if (lastposition != -1 && lastposition != position){ //如果已經單擊過條目並且上次儲存的item位置和當前位置不同 new_imageView.setImageResource(R.mipmap.ic_button_unchecked);//把上次選中的樣式去掉 } new_imageView = old_imageView;//把當前的條目儲存下來 lastposition = position;//把當前的位置儲存下來 listViewAdapter.notifyDataSetChanged(); } });
整體流程差不多就是這個樣子,如果想保留選中以後的文本資訊,只需要在點擊的時候,將TextView的內容儲存下來即可,這裡就不在展示代碼,不足的地方還請同行們多多指教。
感謝閱讀,希望能協助到大家,謝謝大家對本站的支援!