Ich habe eine ListView, die einen benutzerdefinierten Cursoradapter verwendet, um die ListView zu füllen.
Die row.xml
Wie Sie sehen können, ist die Sichtbarkeit von ImageView verschwunden. Ich will es schaffen sichtbar für eine bestimmte Zeile. Hier ist der Code, den ich ausprobiert habe, aber nicht arbeiten ...
%Vor%Vielen Dank im Voraus.
%Vor%BEARBEITEN:
Ich habe es funktioniert. Ich benutzte dies, um die ListView-Aktivität zu starten.
%Vor%In der ListView-Aktivität
%Vor% Dann habe ich das in bindview()
vielleicht sollten Sie es in getView()
Ihres Adapters tun
BEARBEITEN:
%Vor%Wenn es einige Zeit funktioniert, dann kann ich dir helfen. Was passiert, dass jedes Mal, wenn Sie Ihre ListView verschieben, alle Views neu erstellt werden, in diesem Fall speichert es nie den letzten State of View. Also, was Sie tun müssen, ist der Zustand Ihrer jeweiligen Bildansicht zu speichern und in getView () müssen Sie entsprechend einstellen.Ich poste eine meiner Antworten, es kann Ihnen helfen. Hier ist ein kleiner Code für Ihre Hilfe: Ich werde eine Boolean Arraylist erstellen.
private ArrayList imageview_visible = null;
Dann werde ich die Zustände aller Bildansichten in meinem Konstruktor als falsch setzen:
%Vor%Schreiben Sie in Ihrem getView diesen Code:
public Zeige getView (int position, View convertView, ViewGroup Eltern) { // SCHREIBE DEINEN CODE
%Vor%}
Immer wenn Sie Ihre Ansicht ein- oder ausblenden, speichern Sie sie einfach in imageview_visible.set (true oder false). Dadurch wird der Status aller Bildansichten gespeichert und jede Bildansicht entsprechend eingestellt.
Verwenden Sie LayoutInflater, um das Ansichtsobjekt
zu erhalten %Vor%Ich stieß auf ähnliche Probleme, bei denen mehrere Widgets für einige Zeilen, aber nicht für andere angezeigt wurden. Die Probleme waren auf Recycling zurückzuführen. Ich bin mir nicht ganz sicher, ob das dein Problem hier ist, aber du solltest es trotzdem behandeln. Der Trick besteht darin, Sichtbarkeit für jede Zeile festzulegen; anstatt nur für die Zeile, die Sie anzeigen / verschwinden möchten.
Also:
%Vor%Andernfalls gehen Sie davon aus, dass für andere Positionen als 0 die Sichtbarkeit GONE ist, dies aber bei der Ansichtsrecycling möglicherweise nicht der Fall ist. Ich mache diese Arbeit übrigens in bindView. Nicht sicher, ob das technisch korrekt ist.
Ich habe das gleiche Problem ... ich löste mit einer nicht standardisierten Lösung, aber arbeitete für mich ...
%Vor%Importieren von R von Android
%Vor% Sowohl iv.setVisibility(View.VISIBLE);
als auch iv.setVisibility(ImageView.VISIBLE);
sind korrekt, aber es ist besser, View
anstelle von ImageView
zu verwenden, weil VISIBLE
& amp; GONE
sind in View
class definiert.
Sie ändern am meisten die Sichtbarkeit ( VISIBLE
oder GONE
) in if
. wie:
Tags und Links android android-imageview