Ich habe vorher nicht bemerkt, dass getView von listview mehrmals ausgeführt wurde. Da das Layout komplizierter war, ging ich während des Tests zur Haltepunktverfolgung und stellte fest, dass dieselben Daten wiederholt ausgeführt wurden. Ich fand es seltsam, also habe ich online gesucht. Die Erklärungen im Internet sind im Grunde die gleichen, das heißt, wenn die ListView angeordnet ist, sind weder Höhe noch Breite fill_parent, was zu einer kontinuierlichen Berechnung der Höhe und einer kontinuierlichen Aktualisierung führt. Oder sein übergeordneter Container ist nicht auf fill_parent gesetzt.
Wenn das Layout zu komplex ist, ist es unrealistisch, alles entsprechend fill_parent anzupassen. Deshalb habe ich mir eine andere Lösung überlegt, die darin besteht, die Höhe dynamisch festzulegen.
Nachdem das Programm ausgeführt wurde, legen Sie die Höhe der ListView fest und initialisieren Sie dann die Artikelinformationen.
private void fixedListView(){ listView = (ListView) findViewById(R.id.listview); ViewGroup.LayoutParams params = listView.getLayoutParams(); layout = (HorizontalScrollView) findViewById(R.id.layout); params.height = layout.getHeight(); //需要设置的listview的高度,你可以设置成一个定值,也可以设置成其他容器的高度,如果是其他容器高度,那么不要在oncreate中执行,需要做延时处理,否则高度为0 listView.setLayoutParams(params); }
Auf diese Weise wird festgestellt, dass die Aktualisierungsgeschwindigkeit von ListView erheblich beschleunigt wird. Kollegen haben auch das Problem mehrfacher Ausführungen des Listening-Codes gelöst, wenn es einen Listener für addTextChangedListener(new TextWatcher() in der Texteingabe EditText in Item gibt.
Weitere Lösungen für das Problem mehrfacher Aktualisierungen von ListView in Android und wiederholte Ausführung von getView Bitte beachten Sie die chinesische PHP-Website für verwandte Artikel