日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【转】Android:ListView常见错位之CheckBox错位

發布時間:2024/9/5 Android 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】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错位的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。