2

私はいくつかの値を設定して取得するデータラッパークラスを持っています。これに追加して、サーバーからの動的な値がいくつかあります。このラッパークラスにSortedMapを追加して、サーバーから受け取ったときに設定します。そして、この CustomWrapperClassObject を ArrayList に追加し、リストビュー内に ArrayList データを表示する必要があります。

アダプターは ArrayAdapter を拡張します

ArrayList.get(position) を反復しようとすると、customObject が返されます。他のすべての値は正常に設定されていますが、SortedMap を取得してそのキーを反復しようとすると、SortedMap の値がリストの行に混在しています。リストビューのビュー1と同様に、2番目のビューの値も含まれており、上下にスクロールすると、すべてのビューに値が追加されます。

どんな助けにも感謝します。

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