假如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