2012-09-16 40 views
1

这里是我的代码:我有一个关于android 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获取正确的对象而不重复。有人可以告诉我为什么。

回答