Android 如果也选择了,则是从convertView加载的旧值

Android 如果也选择了,则是从convertView加载的旧值,android,android-listview,listadapter,Android,Android Listview,Listadapter,要解决此问题,请跟踪应选择哪些行,并在创建视图/重用converview时相应地设置复选框值。能否显示布局联系人行?@ZouZou我已编辑了我的问题,请检查并回答 public class ContactAdaper extends BaseAdapter { private Context myContext; private LayoutInflater inflater; private ArrayList listname; private

要解决此问题,请跟踪应选择哪些行,并在创建视图/重用converview时相应地设置复选框值。

能否显示布局联系人行?@ZouZou我已编辑了我的问题,请检查并回答
public class  ContactAdaper extends BaseAdapter
{
    private Context myContext;
    private LayoutInflater inflater;      
    private ArrayList listname;
    private ArrayList list_no;
    private List<ContactPojo> contactList;
    private ContactPojo contactObj;
    public ContactAdaper(ContactActivity contactActivity,ArrayList listname,ArrayList list_no,List<ContactPojo> listToAddContacts)
    {
        this.myContext = contactActivity;
        this.listname = listname;
        this.list_no = list_no;
        this.contactList = listToAddContacts;
    }

    @Override
    public int getCount() 
    {
        return listname.size();
    }

    @Override
    public Object getItem(int arg0)
    {
        return arg0;
    }

    @Override
    public long getItemId(int arg0) 
    {
        return arg0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        if (convertView == null)
        {

            inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            convertView = inflater.inflate(R.layout.contact_row, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.txtMobNum = (TextView) convertView.findViewById(R.id.name);
            viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBox);   
            viewHolder.txtName = (TextView)convertView.findViewById(R.id.id);

            convertView.setTag(viewHolder);
        }

        final ViewHolder holder = (ViewHolder) convertView.getTag();
        holder.txtMobNum.setText(list_no.get(position).toString());
        holder.txtName.setText(listname.get(position).toString());


        if(holder != null)
        {
            /*holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() 
            {

                public void onCheckedChanged(final CompoundButton buttonView, boolean isChecked) 
                {
                    //  Toast.makeText(myContext, "Selected item is :-"  +buttonView.getId(), Toast.LENGTH_LONG).show();

                    if(isChecked)
                    {
                        Toast.makeText(myContext, "Selected Name AND Number is :-"  +
                                holder.txtName.getText().toString()+", "+holder.txtMobNum.getText().toString(), Toast.LENGTH_LONG).show();

                        contactObj = new ContactPojo();
                        contactObj.name = holder.txtName.getText().toString();
                        contactObj.mobile = holder.txtMobNum.getText().toString();

                        contactList.add(contactObj);
                    }
                    else
                    {
                        removeContact(holder.txtMobNum.getText().toString());
                        notifyDataSetChanged();
                        Log.d("Cont", holder.txtName.getText().toString()+" = "+holder.txtMobNum.getText().toString()+" is removed from the list ");

                    }
                }
            });*/

            holder.checkBox.setOnClickListener(new View.OnClickListener() 
            {

                @Override
                public void onClick(View v) 
                {
                     boolean checked = ((CheckBox) v).isChecked();
                     switch(v.getId())
                     {
                        case R.id.checkBox:
                            if (checked)
                            {
                                Toast.makeText(myContext, "Selected Name AND Number is :-"  +
                                        holder.txtName.getText().toString()+", "+holder.txtMobNum.getText().toString(), Toast.LENGTH_LONG).show();

                                contactObj = new ContactPojo();
                                contactObj.name = holder.txtName.getText().toString();
                                contactObj.mobile = holder.txtMobNum.getText().toString();

                                contactList.add(contactObj);
                            }
                            else
                            {
                                removeContact(holder.txtMobNum.getText().toString());
                                notifyDataSetChanged();
                                Log.d("Cont", holder.txtName.getText().toString()+" = "+holder.txtMobNum.getText().toString()+" is removed from the list ");
                            }

                            break;
                     }
                }
            });
        }
        return convertView;              
    }      

    private void removeContact(String mobile)
    {
        Iterator<ContactPojo> it = contactList.iterator();
        while (it.hasNext())
        {
            ContactPojo contact = it.next();
            if(contact.mobile.equals(mobile)) 
            {
                it.remove();
            }
        }
    }
}    
class ViewHolder 
{
    TextView txtMobNum;
    TextView txtName;
    CheckBox checkBox;
} 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="30dp"
    >

 <TextView 
     android:id="@+id/name"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:textColor="#000000"
     android:layout_marginLeft="20dp"
     />
 <TextView 
     android:id="@+id/id"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="20dp"
     android:textColor="#000000"
     />
 <CheckBox 
     android:id="@+id/checkBox"
     android:tag="tagCheck"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="20dp"
     android:checked="false"
     />
</LinearLayout>