0
我有一個列表視圖,它有一個textview和一個複選框。android - 列表適配器問題
當我選擇一個列表項時,該行中的複選框被選中,此外還選中了一個不同行的額外複選框。任何想法爲什麼發生這種情況?
我的適配器我在哪裏填充列表視圖:
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>
您能否顯示您的佈局contact_row? – 2013-04-22 11:03:35
@鄒鄒我編輯了我的問題請檢查並回復 – Ajeet 2013-04-22 11:59:28