fand ich eine Lösung. Nicht sicher, ob es zu elegant ist, aber es funktioniert so wird es verlassen, wenn jemand mit etwas besser kommt.
Die Ansicht, die ich zusammen mit der Liste blättern will, ist eine benutzerdefinierte Ansicht, die über die Listenansicht wissen hat. So implementieren ich eine setListView (Listview Listview) -Methode darauf:
private int scrollY; //1
private Map<Integer, Integer> listViewItemHeights = new Hashtable<>();
public void setListView(final ListView listView) {
listView.setOnScrollListener(new OnScrollListener() { //2
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {} //3
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //4
View c = listView.getChildAt(0);
if (c != null) {
int oldScrollY = scrollY;
scrollY = -c.getTop();
listViewItemHeights.put(listView.getFirstVisiblePosition(), c.getHeight());
for (int i = 0; i < listView.getFirstVisiblePosition(); ++i) {
if (listViewItemHeights.get(i) != null)
scrollY += listViewItemHeights.get(i);
}
scrollBy(0, scrollY - oldScrollY);
}
}
});
}
Kommentar No.1: dies ist eine Variable mir Spur der aktuellen Scroll-Position halten zu lassen.
Kommentar Nr.2: eine neue auf Scroll Listenereinstellung kennen meine benutzerdefinierte Ansicht zu lassen, wenn die Liste
Kommentar No.3: dies in diesem Fall umgesetzt werden nicht benötigt.
Kommentar No.4: das ist, wo Magie passiert. Beachten Sie am Ende ich scroll meine Sicht von ScrollY - oldScrollY, lassen Sie mich mit diesem Bit zuerst beginnen. oldScrollY ist die gehaltene Bildlaufposition, scrollY ist die neue Bildlaufposition. Ich muss nach dem Unterschied zwischen ihnen scrollen. Wie scrollY berechnet wird, verweise ich hier auf meine Antwort: Android getting exact scroll position in ListView, so wird die Scroll-Position in der Listenansicht berechnet.
Hallo, danke für deine Antwort. Ich brauche die obersten Zeilen in der Listenansicht, um 'gestempelt' zu werden, also kann ich diese Ansicht nicht in die Kopfzeile einfügen. – Maria
Sie durch die Schaffung von zwei benutzerdefinierten Layout und für ein erstes positon.bind erstes Layout und zweites Layout für all übrigen acheving können .. so müssen Sie die notwendigen valus in Array hinzufügen, was Sie in baseadapter binden –
Die Sache ist, ich nicht nötig tun möchte, dass der Stempel über der ersten Position erscheint. Zeilenhöhen können in meiner Liste unterschiedlich sein und der Stempel kann über die ersten drei oder so gehen. – Maria