2012-10-29 40 views
18

Başlıkta: Adaptörümdeki tüm mevcut öğelerin listesini (dizisini) nasıl alacağımı öğrenmek istiyorum.
Neden? Bağdaştırıcı Listemde görüntülenen nesneler, kullanıcı Bağdaştırıcı'yı kapattıktan sonra bir dinleyiciyi serbest bırakmayı gerektirir. Uygulamamı optimize etmek için bunu yapmam gerekiyor.
Ya da görüntülerin imhası üzerine yürütülen herhangi bir yöntem (geçersiz kılabilirim) var mı?Şu anda AdapterView'da görüntülenen öğeler nasıl alınır?

cevap

28

uygular OnScrollListener

public class NewsCategoryDC extends Activity implements OnScrollListener { 

ve ListView

listView.setOnScrollListener(NewsCategoryDC.this); 

yılında OnScrollListener ayarlamak ve ilk ve son satırları görünür

@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) {} 

alabilirsiniz BU YTL .. ,.

ve diğer bazı en iyi yolu lütfen gönderin, bu çok yararlı ve iyi bir soru ..,.

Teşekkürler ..,.

DÜZENLEME ............................ onScroll içinde

eklenti kodu() metodu

@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

Bu harika bir şey, bunu bilmiyordum. Ancak şimdi: Gerçek görünümler nasıl edinilir? ViewGroup.getChildAt (position) gibi bir şey ama AbsListView içinde kullanmak demek istiyorum. – RedScorpio

+0

Teşekkürler! İşe yarıyor! – RedScorpio

+0

'OnScroll' yöntemi bir AbsListView'ı kabul eder. Bunun yerine bir "AbstractView" kabul eden bir kaydırma işleyici yazmanın bir yolu var mı? –

6

olarak küçük ipucu:

tam görünür durumda olan tüm unsurları elde etmek istiyorsanız - Eğer bu yazı bakmak gerekir (> alt veya üst ve ekranın dışına neredeyse olanlar, bekliyoruz):

See only fully visible ListView-Items

İlgili konular