2012-10-29 37 views
18

Wie in Titel: Ich mag würde wissen, wie die Liste bekommen (Array) alle aktuell angezeigten Elemente in meinem AdapterView.
Warum? Objekte, die in meinem AdapterView angezeigt werden, erfordern das Freigeben eines Listeners, nachdem Benutzer AdapterView schließt. Ich muss es tun, um meine App zu optimieren.
Oder ist es eine Methode (die ich außer Kraft setzen könnte), die auf Ansichten Zerstörung ausgeführt wird?Wie werden Artikel angezeigt, die derzeit in AdapterView angezeigt werden?

Antwort

28

Geräte OnScrollListener

public class NewsCategoryDC extends Activity implements OnScrollListener { 

und in Listview

listView.setOnScrollListener(NewsCategoryDC.this); 

und Sie können diese ersten und letzten sichtbaren Zeilen

@Override 
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) { 
    firstVisibleRow = listView.getFirstVisiblePosition(); 
      lastVisibleRow = listView.getLastVisiblePosition(); 
/*Now you get the first and last visible rows, and you easily get the rows from first to last visible row and allocate resources to visible rows or deallocate resources to rows except visible rows..,.*/ 
} 

@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) {} 

TRY erhalten gesetzt OnScrollListener .. .

und wenn ein anderen besten Weg, hast du bitte, das ist sehr nützlich und gute Frage .., posten.

Dank ..,.

EDIT ............................

Zusatzcode in OnScroll() Methode

@Override 
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) { 
    int firstVisibleRow = listView.getFirstVisiblePosition(); 
    int lastVisibleRow = listView.getLastVisiblePosition(); 

    for(int i=firstVisibleRow;i<=lastVisibleRow;i++) 
    { 
     //Write your code here(allocation/deallocation/store in array etc.) 
     System.out.println(i + "=" + listView.getItemAtPosition(i)); 
    } 
} 
+0

Das ist eine tolle Sache, ich wusste nicht darüber. Aber jetzt: Wie bekomme ich aktuelle Ansichten? Ich meine etwas wie ViewGroup.getChildAt (Position), aber in AbsListView zu verwenden. – RedScorpio

+0

Danke! Es funktioniert! – RedScorpio

+0

Die 'OnScroll'-Methode akzeptiert eine' AbsListView'. Gibt es eine Möglichkeit, einen Scroll-Handler zu schreiben, der stattdessen eine 'AbstractView' akzeptiert? –

6

Als kleiner Hinweis:

Wenn Sie alle Elemente erhalten möchten, die vollständig sichtbar sind (-> diejenigen erwarten, die auf dem Boden oder oben sind und fast aus dem Bildschirm) Sie in diesem Beitrag aussehen sollte:

See only fully visible ListView-Items

Verwandte Themen