Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用id在视图对象中设置多个标记?_Android_Android View - Fatal编程技术网

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

Android 如何使用id在视图对象中设置多个标记?,android,android-view,Android,Android View,如图所示,它表示可能存在内存泄漏。我正试图在convertView中标记holder和另一个对象。我该怎么办?我可以忽略这一点吗 可以使用临时数据结构并根据位置保留值。例如: class YourModelClass { Yourfield1; Yourfield2; } 并将值保留在数组中,然后根据getView中的位置可以使用它 将值标记到convertView将不再有用,因为它将被重用。您可以使用临时数据结构,并根据位置保留值。例如: class YourModelClas

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


可以使用临时数据结构并根据位置保留值。例如:

class YourModelClass
{
   Yourfield1;
   Yourfield2;

}
并将值保留在数组中,然后根据getView中的位置可以使用它


将值标记到convertView将不再有用,因为它将被重用。

您可以使用临时数据结构,并根据位置保留值。例如:

class YourModelClass
{
   Yourfield1;
   Yourfield2;

}
并将值保留在数组中,然后根据getView中的位置可以使用它


将值标记到convertView将不再有用,因为它将被重复使用。

使用list或arraylist存储对象并将该列表作为标记传递。因此,您可以在需要的位置访问它,在那里获取标记并强制转换到arraylist,然后获取对象。

使用list或arraylist存储对象并将该列表作为标记传递。这样您就可以访问它它位于您希望在其中获取标记并强制转换到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类中声明了静态ViewHolder类,并且我只使用一个keyposition来关联标记对象,而不是您的示例中的两个。如果这有帮助,请告诉我。

尝试将其用于多重标记:

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类,并且我只使用一个keyposition来关联标记对象,而不是您的示例中的两个。让我知道这是否有帮助。

这可能是一个非常糟糕的视窗夹图案设计。您正在尝试使用setTagint键,对象标记方法。但是,在内部,您将“key”值设置为R.id.holder和R.id.taged_object,它们是常量!。setTag方法的键值应该为每一行使用唯一的值。您可以使用getView int position、View convertView、ViewGroup parent的位置变量作为键。incident对象也是唯一的。因为这只是当前位置的适配器arraylist的一个对象;我已根据你的要求补充了一个答案。检查一下,让我知道这是否有帮助。这可能是一个非常糟糕的视窗模式设计。您正在尝试使用setTagint键,对象标记方法。但是,在内部,您将“key”值设置为R.id.holder和R.id.taged_object,它们是常量!。setTag方法的键值应该为每一行使用唯一的值。您可以使用getView int position、View convertView、ViewGroup parent的位置变量作为键。incident对象也是唯一的。因为这只是当前位置的适配器arraylist的一个对象;我已根据你的要求补充了一个答案。检查一下,让我知道这是否有帮助。像HashMap吗?不,这是示例中使用的自定义模型类。像HashMap吗?不,这是示例中使用的自定义模型类。我明白了…,想法是从ListView的onItemClickListener{}轻松获取标记对象您还可以通过请求itemclick方法public void onItemClickAdapterView arg0、View arg1、int position、long arg3来检索listview项的所有对象。这里arg1是listview项,因此您可以在itI上调用getchild方法。请参见…,其目的是从listview的onItemClickListener{}轻松获取标记对象您还可以通过请求itemclick方法public void onItemClickAdapterView arg0,View arg1,int position,long arg3来检索listview项的所有对象。这里arg1是listview项,因此您可以在其上调用getchild方法。这非常有趣。。让我来测试一下。我下一个小时给你答复这很有趣。。让我来测试一下。我会在一小时后回复你