Ich versuche, 2 verschiedene Objektansichten anzuzeigen, je nachdem, was ich in meiner Array-Liste habe. Ohne die Bedingung (wenn) gibt es kein Problem, aber wenn ich die Bedingung stelle und ich mich mit 2 viewHolders befassen muss, bekomme ich eine Fehlermeldung, dass viewHolder nicht von viewHolder umgewandelt werden kann.viewHolder konnte nicht von viewHolder
Hier ist mein Code:
@Override
public View getView(int position, View view, ViewGroup parent) {
bind(getItem(position), view);
return view;
}
private void bind(final Eddystone eddystone, final View view) {
List<Content> contents = ... ;
if(contents.get(i).content_type_id==2){
ViewHolder holder = (ViewHolder) view.getTag();
// some code here
}
else {
ViewHolderVideo holder = (ViewHolderVideo) view.getTag();
// some code here
}
}
der Fehler auf dem zweiten Halter ist (in anderem Zustand).
Bitte denken Sie daran, wenn ich die Bedingung (die sonst) entfernen, funktioniert es perfekt, und die Klasse, in der dieser Code geschrieben wird, ist ein Adapter.
Bitte jede Hilfe ist willkommen.
Danke :)
Dank für Ihre anwser, Ich habe verstanden, aber das Problem in meinem Code, die Inhaltsliste wird in einer CallBack() initiiert, so dass ich eine Null-Referenz Ausnahme in getItemViewType mit contents.get (i). Die Inhaltsliste wird in der buildVideoRow innerhalb einer onSuccess-Methode des Callbacks gestartet:/Haben Sie eine Idee, wie Sie dies lösen können? –
@AymaneBo Laden Sie zuerst Ihre Daten, bevor Sie versuchen, sie in einer Liste anzuzeigen, oder laden Sie den Teil, der den Zeilentyp bestimmen kann, und laden Sie den Rest später. Der Adater sollte nicht für das Laden der Liste verantwortlich sein; tun Sie das in Ihrer Aktivität oder in Ihrem Fragment und übergeben Sie dann die geladene Liste an den Adapter, indem Sie 'notifyDataSetChanged()' aufrufen, wenn Sie die ListView aktualisieren müssen. – Karakuri