私はいくつかの値を設定して取得するデータラッパークラスを持っています。これに追加して、サーバーからの動的な値がいくつかあります。このラッパークラスに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;
}
}