我有一个关于android listView和baseAdapter的奇怪情况?

时间:2012-09-16 14:54:09

标签: android list listview baseadapter

这是我的代码:

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中获取正确的对象,而不重复。有人可以告诉我原因吗。

1 个答案:

答案 0 :(得分:1)

看看这个:Absolute position in BaseAdapter of GrivView

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