答案 0 :(得分:3)
您可以使用临时数据结构并根据位置保留值。例如:
class YourModelClass
{
Yourfield1;
Yourfield2;
}
并将值保留在数组中,然后根据getView
中的位置,您可以使用它。
将值标记为convertView将无用,因为它将被重用。
答案 1 :(得分:3)
尝试将其用于多重标记:
Class MultipleTag{
Incident incident; // Stores incident object
ViewHolder holder ;
public MultipleTag(){
holder = new ViewHolder();
}
public setIncidentTag(Incident incident){
this.incident = incident;
}
public static class ViewHolder{
TextView ... ;
ImageView ...;
}
}
/* Inside the adapter's getView() method */
MutlipleTag.ViewHolder viewHolder;
if(converView == null){
MultipleTag obj = new MultipleTag();
viewHolder = obj.holder; // obtain the viewHolder
obj.setIncidentTag(incident); // Setting incident tag.
obj.holder.textViewitem = (TextView)view.findViewById(R.id...);
// .... Initialize all the viewHolder variables
/* now set tag to the MultipleTag object */
convertView.setTag(position, obj);
}
else{
MultipleTag temp = (MultipleTag)convertView.getTag(position);
viewHolder = temp.holder; // obtain the viewHolder object.
}
请注意,我已经在MultipleTag类中声明了静态ViewHolder类,而我只使用一个键(位置)来关联标记对象而不是两个(您的示例)。如果这有帮助,请告诉我。
答案 2 :(得分:1)
使用list或arraylist来存储您的对象并将该列表作为标记传递。因此,您可以在其中获取标记并将其转换为arraylist然后获取对象。