Gibt es eine Möglichkeit, die Ressourcen-ID (wie R.layout.viewtoInflate) des Layouts, aus dem eine Ansicht wurde aufgeblasen erhalten?Erhalten Ressource-ID von welcher Ansicht wurde aufgeblasen
Ich versuche, eine Listenansicht zu implementieren, die 2 benutzerdefinierte Layouts für die Listenelemente verwendet. Welches Elementlayout verwendet wird, basiert auf einem Feld in den Objekten, die zum Füllen der Listenansicht verwendet werden.
Was ich in meinem benutzerdefinierten Adapter vermisse, ist eine Möglichkeit, zu wissen, welche Ressource die 'convertView', die ich in getView() bekommen habe, von aufgeblasen wurde. Wenn ich diese Informationen erhalten könnte, kann ich vergleichen und feststellen, ob ich die konvertierte Ansicht wiederverwenden kann, wie sie ist, oder ob ich sie durch das entsprechende Layout für den aktuellen Artikel ersetzen muss.
So ideal wäre es so etwas wie dieses:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
JSONObject currItem = mItems.getJSONObject(position);
int layoutType;
if (currItem.getBoolean("alternate"))
layoutType = R.layout.list_item_b;
else
layoutType = R.layout.list_item_a;
if (convertView == null || <convertView.resourceID> != layoutType) {
convertView = inflater.inflate(layoutType, null);
//Finish setting up new View and its holder
}
else {
//Get view holder for view reuse
}
//populate view with the required content
return convertView;
}
Im schlimmsten Fall konnte ich einfach nicht alle wiederverwenden Ansichten und aufblasen nur das Layout ich jedes Mal brauchen, aber es scheint sehr verschwenderisch.
Ich verstehe nicht, wie ich diese Multi-Layout-Funktionalität verpasst habe, aber danke. Danke auch für den Vorschlag, den Layout-Typ zu finden, der jetzt nicht mehr benötigt wird, aber trotzdem gut zu wissen ist. Dennoch erscheint es mir seltsam, dass es keinen offiziellen Weg gibt, das Layout einer aufgeblasenen Ansicht zu erhalten. – RobertoCuba