listview的问题

jsplove 2011-08-25 10:42:58
我重写了一个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;
}


}
...全文
62 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
longfeihufengyun 2011-08-28
  • 打赏
  • 举报
回复
mark
guoying_ 2011-08-26
  • 打赏
  • 举报
回复
1楼正解,mv = new MyView(context, mItems);这句话,你一次把mItems中所有内容都绑定了!
jsplove 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 perfe_ct 的回复:]
1 为什么出现了3个view?
因为你的mItems对象存放了3个记录,并且会根据getCount()中返回的int值来判断是否调用getView(int position, View convertView, ViewGroup parent)方法,mItems.size()==3
2 为什么每个view把三个map中的值都显示出来了
因为mv = new MyView(context, ……
[/Quote]
二楼正解啊,非常感谢!
jsplove 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 aomandeshangxiao 的回复:]
引用 2 楼 lieri111 的回复:

楼主你遍历了所有当然每个view里面就显示三条了,你需要哪个直接遍历所需要的就可以了
楼主修改下 getView方法。就可以了
把一个mv只获取一个mItems就行了。。。
[/Quote]
解决了,非常感谢
傲慢的上校 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lieri111 的回复:]

楼主你遍历了所有当然每个view里面就显示三条了,你需要哪个直接遍历所需要的就可以了
[/Quote]楼主修改下 getView方法。就可以了
把一个mv只获取一个mItems就行了。。。
passself 2011-08-25
  • 打赏
  • 举报
回复
楼主你遍历了所有当然每个view里面就显示三条了,你需要哪个直接遍历所需要的就可以了
perfe_ct 2011-08-25
  • 打赏
  • 举报
回复
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里头去了

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧