Android 在ArrayAdapter的getView()方法中迭代循环<;CustomWrapperClassObject>;

Android 在ArrayAdapter的getView()方法中迭代循环<;CustomWrapperClassObject>;,android,android-listview,arraylist,android-arrayadapter,sortedmap,Android,Android Listview,Arraylist,Android Arrayadapter,Sortedmap,我有一个数据包装类,我在其中设置并获取一些值,添加到这个类中,我有一些来自服务器的动态值,我在这个包装类中添加了一个SortedMap,当我从服务器接收到它时要设置,而不知道它是什么数据,然后我将这个CustomWrapperClassObject添加到ArrayList中,必须在listview中显示ArrayList数据 适配器扩展阵列适配器 现在,当我尝试迭代ArrayList.get(位置)时,它返回一个customObject。所有其他值都设置得很好,但当我得到一个SortedMap并

我有一个数据包装类,我在其中设置并获取一些值,添加到这个类中,我有一些来自服务器的动态值,我在这个包装类中添加了一个SortedMap,当我从服务器接收到它时要设置,而不知道它是什么数据,然后我将这个CustomWrapperClassObject添加到ArrayList中,必须在listview中显示ArrayList数据

适配器扩展阵列适配器

现在,当我尝试迭代ArrayList.get(位置)时,它返回一个customObject。所有其他值都设置得很好,但当我得到一个SortedMap并尝试遍历它的键时SortedMap值在列表行中混淆。Like listview中的视图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){
 }
}
类CustomWrapperClassObject{
公共字符串a;
公共字符串b;
SortedMap dynamicValues=新树映射();
公共字符串getA(){
}
公共空集a(字符串a){
}
==b的方法相同=====
public SortedMap GetDynamicValue(){
}
公共void设置动态值(SortedMap值){
}
}
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; 
        }
    }
public View getView(最终int位置、视图转换视图、视图组父视图)
{
视图v=转换视图;
ViewHolder=null;
如果(v==null)
{
holder=新的ViewHolder();
v=vi.充气(R.布局.行\项,空);
holder.a=(文本视图)v.findViewById(R.id.tv_a);
holder.b=(TextView)v.findviewbyd(R.id.tv_b);
holder.dynamicValue=(TextView)v.findViewById(R.id.tv\u dynamic);
v、 setTag(支架);
}
其他的
holder=(ViewHolder)v.getTag();
CustomWrapperClassObject CustomWrapperClassObject=ArrayList.get(位置);
holder.a.setText(customWrapperClassObject.getA());
holder.b.setText(customWrapperClassObject.getB());
if(customWrapperClassObject.GetDynamicValue()!=null&&customWrapperClassObject.GetDynamicValue().size()>0)
{
SortedMap mDataObject=customWrapperClassObject.GetDynamicValue();
Set keySet=mDataObject.keySet();
String[]keys=keySet.toArray(新字符串[keySet.size()]);
for(int i=0;i
您是否对树映射使用自定义比较器?@MaximEfimov否。我使用SortedMap只是为了获取排序后的值。因为我从JSON对象检索数据,JSON会自动刷新顺序。那么,到底是什么混淆了:映射中的键值绑定还是键集中的键顺序?@MaximEfimov我已经编辑了我的问题。实际情况lly第一个视图将附加2-3个SortedMap索引值。例如,如果第一个视图只有1个动态键和值要显示,但它当前显示5-6个值,如果我滚动,则会附加值。一个问题是,我将值附加到TextView未设置,但我已尝试通过生成动态textvi对其进行设置ews。请建议。尝试以下操作:不要在适配器中为
dynamicValue
生成字符串,而是在
CustomWrapperClassObject
中对其进行初始化(如
string c
),并在适配器中将其引用为
a
b
。这不会解释问题,但可能有助于解决问题。