我有一个数据包装器类,我在其中设置并获取一些值,除此之外,我还有一些来自服务器的动态值,并且我在这个包装器类中添加了一个 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;
}
}