Gemeinschaft! Ich brauche eine Hilfe bei der Aktualisierung von unsichtbaren Elementen in ListView. Es geht nicht um den Inhalt von Elementen, sondern um die Ansichtsdarstellung von Elementen. Ok, lass mich dir mein Beispiel zeigen. Ich habe ein String-Array:Wie aktualisiert man bestimmte Ansichten unsichtbarer Objekte in ListView? [Android]
<string-array name="reminder_notifications">
<item>15 minutes before</item>
<item>30 minutes before</item>
<item>1 hour before</item>
<item>1.5 hour before</item>
<item>5 hours before</item>
<item>8 hours before</item>
<item>1 day before</item>
</string-array>
In Aktivität i Adapter erstellt habe:
adapterNotifications = ArrayAdapter.createFromResource(this, R.array.reminder_notifications, R.layout.dialog_list_multiple_choise);
Nach, mit einigen Methoden i für aktuelle Erinnerung whitch Elemente aus String-Array sind vorhanden berechnen. Z.B. Wenn der Benutzer um 16:00 Uhr eine Erinnerung für 16:45 setzt, kann er nur die Elemente 15 minutes before
und 30 minutes before
auswählen. Andere Elemente sollten deaktiviert sein. Also, nach google habe ich herausgefunden, wie der Zugang zu unsichtbar Listview Kind bei bestimmten Position zu bekommen:
public View getViewByPosition(int position, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (position < firstListItemPosition || position > lastListItemPosition) {
return listView.getAdapter().getView(position, listView.getChildAt(position), listView);
} else {
final int childIndex = position - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}
Jetzt bin ich mit dem letzten Problem konfrontiert (hoffe ich) - wie Artikel anzeigen aktualisieren, die ich von Methode oben? Ich habe versucht, diese zu nutzen:
View v = getViewByPosition(position, lvNotifications);
v.setEnabled(true);
Aber es Neuigkeiten stehen erst nach dem ersten Dialog zu öffnen, eine andere Worte, die ich das Dialogfenster mit Listview zu öffnen haben, schließen Sie es und wieder zu öffnen. Nur in diesem Fall werde ich eine aktualisierte Ansicht erhalten. Ich weiß, dass mein Englisch ist schrecklich, so gibt es Screenshots unten:
Hauptdialogfeld. Bevor Sie den Dialog mit ListView öffnen
Listenansicht-Dialog. Erste Eröffnung. Keine Elemente sind deaktiviert. WRONG
Listenansichtsdialog. Zweite Öffnung. 5 Gegenstände sind deaktiviert. RECHTS
Vielen Dank.
Mann, du bist einfach großartig. Vielen Dank! Und ein großes Dankeschön! Sag mir bitte was ist besser CheckedTextView oder TextView + CheckBox? –
CheckedTextView soll mit ListView und setMultipleChoiceItems (...) und setSingleChoiceItems (...) gut spielen und nicht alleine oder als normale Ansicht in meiner Lösung verwendet werden. Verwenden Sie ein TextView und ein RelativeLayout, wenn dies richtig gemacht wird, unterstützt dies auch RTL-Layouts und macht keinen visuellen Unterschied. Sehen Sie sich das Layout an, das ich am Ende meiner Antwort im GitHub Repo verlinkt habe. Ich habe ein paar kleine Änderungen an meiner Lösung vorgenommen (ArrayAdapter durch BaseAdapter ersetzt, einige Paddings geändert) – crysxd