问题:
当我在列表视图中点击第二个复选框项目时,第十个项目会自动被选中。我不明白发生了什么?
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.TextView;
public class ItemAdapter extends ArrayAdapter<MyItem> {
private int resId;
Context context;
private ArrayList<MyItem> itemList;
public ItemAdapter(Context context, int textViewResourceId,
List<MyItem> objects) {
super(context, textViewResourceId, objects);
this.context = context;
this.resId = textViewResourceId;
this.itemList = new ArrayList<MyItem>();
this.itemList.addAll(objects);
}
private class ViewHolder {
public boolean needInflate;
public TextView txtItemName;
public CheckBox chkItem;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
MyItem cell = (MyItem) getItem(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listitem, null);
holder = new ViewHolder();
holder.txtItemName = (TextView) convertView
.findViewById(R.id.tvItemName);
holder.chkItem = (CheckBox) convertView.findViewById(R.id.chkItem);
holder.chkItem
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
//Log.i("Pos", "" + position);
//cell.setSelected(buttonView.isChecked());
}
});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtItemName.setText(cell.getName());
return convertView;
}
}
"MyItem"是我的POJO类。
OnCreate代码:
lvItemName = (ListView) findViewById(R.id.lvItemName);
List<MyItem> myItemsList = new ArrayList<MyItem>();
for (int i = 0; i < items.length; i++) {
MyItem item = new MyItem(items[i], false);
myItemsList.add(item);
}
ItemAdapter adapter = new ItemAdapter(this, R.layout.listitem,
myItemsList);
lvItemName.setAdapter(adapter);
lvItemName.setOnItemClickListener(this);
"items" 是我的字符串数组。
提前感谢。