我重写了一个adapter,构造adapter时要传入一个List,我的list是由三个hashmap构成的List<HashMap<String,String>>,我的目的是要显示三个view,每个view上显示一个map中的内容,我的结果却出现了三个view,但是每个view把三个map中的值都显示出来了,也就是说三个view是一模一样的,请问怎么回事啊!
附代码:
public class MyAdapter extends BaseAdapter {

private Context context = null;
List<HashMap<String,String>> mItems = new ArrayList<HashMap<String,String>>();
public MyAdapter(Context context)
{
this.context = context;
}
public MyAdapter(Context context,List<HashMap<String,String>> lt)
{
this.context = context;
this.mItems = lt;
}
//设置文件列表
public void setListItems(List lit){
mItems = lit;
}
@Override
public int getCount() {
// TODO Auto-generated method stub

return mItems.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mItems.get(position);
}
//得到移项的ID
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
MyView mv;
if(convertView == null){
mv = new MyView(context, mItems);
}else{
mv = (MyView)convertView;

} return mv;
}
}

解决方案 »

  1.   

    1 为什么出现了3个view?
    因为你的mItems对象存放了3个记录,并且会根据getCount()中返回的int值来判断是否调用getView(int position, View convertView, ViewGroup parent)方法,mItems.size()==3
    2 为什么每个view把三个map中的值都显示出来了
    因为mv = new MyView(context, mItems);你在调用这个构造方法的时候就把3条记录都绑定到这个view里头去了
     
      

  2.   

    楼主你遍历了所有当然每个view里面就显示三条了,你需要哪个直接遍历所需要的就可以了
      

  3.   

    1楼正解,mv = new MyView(context, mItems);这句话,你一次把mItems中所有内容都绑定了!
      

  4.   

    楼主修改下 getView方法。就可以了
    把一个mv只获取一个mItems就行了