假如ListView,分紅2頁(或者設置數據能夠縱向拉,可隱藏),每頁3條數據,每一個Listview的Item 裏面有個checkBox,如今,當我選擇第一頁的前兩天數據,翻到第二頁,居然第二頁後兩條數據也選中了ide
HashMap<Integer,View> lmap = new HashMap<Integer,View>(); @Override public View getView(final int i, View convertview, ViewGroup viewGroup) { View view; ViewHolder viewHolder = null; if (lmap.get(i) == null){ view = View.inflate(context, R.layout.add_learn_listview_layout, null); viewHolder = new ViewHolder(); viewHolder.add_learn_list_chebox= (CheckBox)view.findViewById(R.id.add_learn_list_chebox); final int p = i; lmap.put(i, view); view.setTag(viewHolder); }else { view = lmap.get(i); viewHolder = (ViewHolder) view.getTag(); } return view; }
定義了一個HashMap<Integer,View> lmap,在getView()方法中,使用lmap.put(position, view)把每一個view和position一一對應起來,對於已經創建的view,使用view = lmap.get(position)來取,這樣既能夠保存改變的狀態,又不會重複。get