list view position is getting changed when scrolling on android

后端 未结 3 1140
孤街浪徒
孤街浪徒 2020-12-06 12:08

I have list view [text view and check box controlls] with more data. I will choose the item from list view and display the selected items in the next activity. My problem is

3条回答
  •  时光取名叫无心
    2020-12-06 12:29

    I would recommend you to remodify your getView like this. This helped me.

     @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
      ViewHolder holder =null;
    //      Log.e("getview", "getview");
            View view = null;
            if (convertView == null) {
                LayoutInflater inflator = context.getLayoutInflater();
                view = inflator.inflate(R.layout.list_layout, null);
                holder =(ViewHolder) view.getTag();
                viewHolder.text = (TextView) view.findViewById(R.id.label);
                viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
    
                view.setTag(viewHolder);
    
            } else {
                view = convertView;
                ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
            }
        viewHolder.checkbox.setTag(list.get(position));
    
            holder.text.setText(list.get(position).getName());
            holder.checkbox.setChecked(list.get(position).isSelected());
              viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                            public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
    //                          con = new constant();
                                Model element = (Model) viewHolder.checkbox.getTag();
                                element.setSelected(buttonView.isChecked());
    //                          Log.e("MyCustomArrayAdapter.java", "selectpos array list length"+constant.selectpos.size());
                                if(isChecked==true){
                                    Log.e("check box value and position  ", element.getName());
                                    Log.e("position", ""+position);
                                    con.selectpos.set(position, 1);
    
                                }
                                else{
                                    Log.e("position unselect", ""+position +"---------"+ element.getName());
                                    con.selectpos.set(position, 0);
                                }
                            }
                        });
            return view;
        }
    }
    

提交回复
热议问题