1

这是我的代码:

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 中获取正确的对象,而无需重复。谁能告诉我为什么。

4

1 回答 1

1

看看这个:绝对位置在 GrivView 的 BaseAdapter

顺便说一句,您的列表视图一次显示大约 7-9 行吗?

于 2012-09-17T01:39:09.010 回答