如何使用 id 在 views 对象中设置多个标签?
How to set more than one tag in views object using id?
如图所示,提示可能存在内存泄漏。我正在尝试在 convertView
中标记 holder 和另一个对象。我该怎么办?我可以忽略吗?
您可以使用临时数据结构并根据位置保留值。例如:
class YourModelClass
{
Yourfield1;
Yourfield2;
}
并将值保存在一个数组中,然后根据在 getView
中的位置,您可以使用它。
将值标记为 convertView 将无用,因为它将被重复使用。
使用 list 或 arraylist 来存储您的对象并将该列表作为 tag.So 传递,您可以在需要的地方访问它获取标签并转换为 arraylist 然后获取您的对象。
尝试使用它进行多重标记:
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 class 中声明了静态 ViewHolder class,并且我仅使用 一个键(位置) 来关联标记对象而不是两个(你的例子)。如果这有帮助,请告诉我。
如图所示,提示可能存在内存泄漏。我正在尝试在 convertView
中标记 holder 和另一个对象。我该怎么办?我可以忽略吗?
您可以使用临时数据结构并根据位置保留值。例如:
class YourModelClass
{
Yourfield1;
Yourfield2;
}
并将值保存在一个数组中,然后根据在 getView
中的位置,您可以使用它。
将值标记为 convertView 将无用,因为它将被重复使用。
使用 list 或 arraylist 来存储您的对象并将该列表作为 tag.So 传递,您可以在需要的地方访问它获取标签并转换为 arraylist 然后获取您的对象。
尝试使用它进行多重标记:
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 class 中声明了静态 ViewHolder class,并且我仅使用 一个键(位置) 来关联标记对象而不是两个(你的例子)。如果这有帮助,请告诉我。