这是我的代码:
public class MyAdapter extends BaseAdapter{
private LayoutInflater mInflater;
ViewHolder holder = null;
public MyAdapter(Context context){
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/**Original holder
*
*
* */
//ViewHolder holder = null;
if (convertView == null) {
holder=new ViewHolder();
convertView = mInflater.inflate(R.layout.country_list_row, null);
holder.countryName=(TextView)convertView.findViewById(R.id.country_text);
holder.check = (CheckBox)convertView.findViewById(R.id.country_check);
convertView.setTag(holder);
}else {
holder = (ViewHolder)convertView.getTag();
}
holder.check.setTag(new Integer(position));
Log.v("In CountryList","mData.get("+position+").get(country) = "+(String)mData.get(position).get("country"));
holder.countryName.setText((String)mData.get(position).get("country"));
if (position == countryIndex){
Log.v("In CountryList onCreate","before setChecked(true), countryIndex=="+countryIndex);
Log.v("In CountryList onCreate","before setChecked(true), position=="+position);
holder.check.setChecked(true);
}else{
Log.v("In CountryList onCreate","setChecked(false), countryIndex=="+countryIndex);
Log.v("In CountryList onCreate","setChecked(false), position=="+position);
holder.check.setChecked(false);
}
holder.check.setOnCheckedChangeListener(new myCheckBoxListener(position));
return convertView;
}
}
我发现这个位置一直在从 0 到 8 循环。但是,我也可以使用 "(String)mData.get(position).get("country")" 从 mData 中获取正确的对象,而无需重复。谁能告诉我为什么。