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 に答える