Android中map最后一行数据覆盖问题,为什么显示的都是map中最后一对数据?

图片说明

 public View getView(int position, View convertView, ViewGroup parent) {
        Drawing drawing = (Drawing) this.getItem(position);
        ViewHolder viewHolder;
        if(convertView == null){
            viewHolder = new ViewHolder();
            convertView = inflater.inflate(R.layout.list_item, null);

            viewHolder.tv1 = (TextView) convertView.findViewById(R.id.tv1);
            viewHolder.tv2 = (EditText) convertView.findViewById(R.id.tv2);

            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder) convertView.getTag();
        }
        for (Map.Entry<String,Object> entry:map.entrySet()){
            String key=entry.getKey();
            String value=String.valueOf(entry.getValue());
            Log.d(TAG, "getView: "+key+"==="+value);
            viewHolder.tv1.setText(key);
            viewHolder.tv2.setText(value);
        }
        return convertView;
    }

想要的是将map中所有的key-value显示在listview中,但是最后全被map中的最后一行数据给覆盖了,如何才能显示出map中的每一对数据在listview中

因为你这循环完就是最后一条数据覆盖到了 应该用list来进行操作的,你最后那个循环写的没有意义,
https://www.cnblogs.com/r-decade/p/5827841.html
看下这个补补基础吧

getView()方法是多次调用的(每次i填充item都会调用),你在这个方法里做循环赋值话,肯定每次都是map里最后一个位置上的数据被显示到item上的。

用list的下标来进行显示

BaseAdapter中的数据建议还是使用List的数据结构更好,Map的话需要将position作为key去取item,不好用。你这里的问题也是在于你的map没有和任何position相对应,渲染时每一次调用getView(),都是走完了遍历流程到Map的最后一个,也就不会有变化。

getView中还去循环数据?
for (Map.Entry entry:map.entrySet()){
String key=entry.getKey();
String value=String.valueOf(entry.getValue());
Log.d(TAG, "getView: "+key+"==="+value);
viewHolder.tv1.setText(key);
viewHolder.tv2.setText(value);
}
这段代码不是这么写的,你只需要取出对应的possition的值显示到控件上就好了
getView这个方法里等于是把数据集合在循环了,每次走getVew等于就在取集合数据中的一条数据