生活随笔
收集整理的這篇文章主要介紹了
【转】Android:ListView常见错位之CheckBox错位
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文網址:http://blog.csdn.net/lemon_tree12138/article/details/39337867
ListView在什么樣的情況下會出現錯位?錯位的原因是什么?怎么解決?下面的內容會對這些問題做一個講解。
1.ListView在什么樣的情況下會出現錯位?
其實錯位是當我們的ListView的每個單項(item)從屏幕中移入或是移出,我們的系統會對這個item的狀態進行重新定義——是否被選中等等。一般只是顯示的情況下,我們的ListView很少出現錯位,因為狀態沒有改變。
我們現在就是拿一個CheckBox組件來說明,因為CheckBox是一個比較基礎的換件,而且CheckBox的狀態改變比較明顯。
例如下面這種情況:
初始界面中選中第0個和第1個:
當我們對屏幕進行滑動再回來的時候,我們會看到,第0個的CheckBox的勾不見了。第9個的CheckBox出現了勾,這是個就是錯位。
也就是說我們在重新加載由屏幕之外的item移到屏幕之內時,CheckBox的狀態發生改變。
如是,我們想是不是有一種方法來記錄這種變化,且變化只是在監聽器監聽到有需要改變的狀態發生時,才會變化。
這里我們用一個ArrayList<Boolean>的數組來記錄。
關鍵代碼如下:
?
[java]?view plaincopyprint?
public?View?getView(final?int?position,?View?convertView,?ViewGroup?parent)?{??????????ViewHolder?viewHolder?=?null;??????????if?(recordMap.get(position)?==?null)?{????????????????????????????convertView?=?mInflater.inflate(R.layout.listview_item,?null);??????????????viewHolder?=?new?ViewHolder(convertView);??????????????Log.i(TAG,?"1:?"?+?position);????????????????final?int?finalP?=?position;??????????????recordMap.put(position,?convertView);??????????????viewHolder.checkBox.setOnClickListener(new?OnClickListener()?{????????????????????????????????????@Override??????????????????public?void?onClick(View?v)?{??????????????????????CheckBox?checkBox?=?(CheckBox)v;??????????????????????isChecked.set(finalP,?checkBox.isChecked());??????????????????}??????????????});????????????????????????????convertView.setTag(viewHolder);??????????}?else?{??????????????Log.i(TAG,?"2:?"?+?position);??????????????convertView?=?recordMap.get(position);??????????????viewHolder?=?(ViewHolder)?convertView.getTag();??????????}????????????????????viewHolder.button.setText("click?"?+?position);??????????viewHolder.checkBox.setChecked(isChecked.get(position));????????????????????return?convertView;??????}?? ?
?
-----------------------------------------------?程序源碼下載
轉載于:https://www.cnblogs.com/wi100sh/p/4491882.html
總結
以上是生活随笔為你收集整理的【转】Android:ListView常见错位之CheckBox错位的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。