如何使用id在视图对象中设置多个标记?

时间:2015-12-01 05:10:51

标签: android android-view

如图所示,它表示可能存在内存泄漏。我正试图在convertView中标记持有人和另一个对象。我该怎么办?我可以忽略它吗?

enter image description here

3 个答案:

答案 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然后获取对象。