list view position is getting changed when scrolling on android

后端 未结 3 1136
孤街浪徒
孤街浪徒 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:09

    I solved the problem. i add the

      View view = null;
      convertView = null;  //in the get view and comments the else part of
            if (convertView == null) {
                    }
                    /*else{
                    } */
    
    0 讨论(0)
  • 2020-12-06 12:17

    change this in your adapter class 

    View view = null;
    

    to

    View view = convertView;
    
    0 讨论(0)
  • 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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题