2

我有一个数据包装器类,我在其中设置并获取一些值,除此之外,我还有一些来自服务器的动态值,并且我在这个包装器类中添加了一个 SortedMap 以设置当我从服务器接收它时不知道那是什么数据,然后我将此 CustomWrapperClassObject 添加到 ArrayList 中,必须在列表视图中显示 ArrayList 数据。

适配器扩展了 ArrayAdapter

现在,当我尝试迭代 ArrayList.get(position) 时,它返回一个 customObject。所有其他值都设置得很好,但是当我得到一个 SortedMap 并尝试遍历它的键时。SortedMap 值混合在列表行中。就像列表视图中的视图 1 也包含第二个视图的值,并且当我向下滚动和向上滚动时,所有视图中都添加了值。

感谢任何帮助。

class CustomWrapperClassObject{
 public String a;
 public String b;
 SortedMap<String,String> dynamicValues = new TreeMap<String,String>();

 public String getA(){
 }
 public void setA(String a){
 }
 ====same way for b=====
 public SortedMap<String,String> getDynamicValues(){
 }
 public void setDynamicValues(SortedMap<String,String> values){
 }
}

ArrayAdapter<>的getView方法============================================= ==============

public View getView(final int position, View convertView, ViewGroup parent) 
        {
            View v = convertView;
            ViewHolder holder = null;

            if (v == null) 
            {
                holder=new ViewHolder();  
                v = vi.inflate(R.layout.row_item, null); 

                holder.a=(TextView) v.findViewById(R.id.tv_a);
                holder.b=(TextView)v.findViewById(R.id.tv_b);
                holder.dynamicValue=(TextView)v.findViewById(R.id.tv_dynamic);


                v.setTag(holder);
            }
            else
                holder=(ViewHolder)v.getTag();

            CustomWrapperClassObject customWrapperClassObject= ArrayList.get(position);


            holder.a.setText(customWrapperClassObject.getA());
            holder.b.setText(customWrapperClassObject.getB());


            if(customWrapperClassObject.getDynamicValues()!= null && customWrapperClassObject.getDynamicValues().size() > 0)
            {
                SortedMap<String,String> mDataObject =  customWrapperClassObject.getDynamicValues();
                Set<String> keySet = mDataObject.keySet();
                String[] keys = keySet.toArray(new String[keySet.size()]);

                for(int i = 0 ; i < keys.length ; i++)
                {
                    holder.dynamicValue.append(keys[i]+":"+mDataObject.get(keys[i]+"\n");


                }
            }

            return v; 
        }
    }
4

0 回答 0