2010-06-24 18 views
10

Android'de ListView'den ilk görüntülenen görünümü elde etmenin bir yolu var mı?Bir Android Listesinden ilk görünen görünüm nasıl görünüyorsun

Bağdaştırıcıdaki ilk Görünümün arkasındaki verileri alabilirim ancak ilk Görünümü ListView'de bulamıyorum.

Kaydırma eylemi bittikten sonra ilk görünen görünümü değiştirmek istiyorum. Referanslara referans kaydetmemem gerektiğini biliyorum.

+0

Görünümler geri dönüştürülmüştür. Belirli bir görünüm için neye ihtiyacınız var? –

+0

Sorumu düzenlerim. Kullanıcı listeyi kaydırdıktan sonra görünümü değiştirmek istiyorum. – Janusz

cevap

12

Aslında ListView öğeleri yalnızca ListView'in çocuklarıdır. Yani ilk görünür ListView öğedir:

listView.getChildAt(0) 
+0

Döndüğünüz null görünümünü araştırırsanız çok teşekkür ederim. Çalışmayı başlatırsanız ve bazen listenin bir çocuğu yoksa, kaydırma ve liste oluşturma bazen aynı anda gerçekleşir. – Janusz

+5

Bu şekilde yanlış olduğunu düşünüyorum. Çünkü yüklenen ilk öğeyi alırsın. ve belki bu öğe ilk görünür değil. Ama listView.getFirstVisiblePosition() her zaman daha iyi ve iyi çalışıyor. – NrNazifi

+0

Başlıklar varsa doğru değil. –

3

ListView ilk görünür bir görünüm elde etmek için bir işlev getFirstVisiblePosition yüzden vardır, kod şöyle olacaktır: Aslında

listView.getChildAt(listView.getFirstVisiblePosition());

+7

childAt() konumu ile getFirstVisiblePosition() tarafından döndürülen konum arasında bir fark vardır. GetFirstVisiblePosition konumu, veri bağdaştırıcımdaki konumdur. ChildAt, yalnızca şu anda liste görünümünde görünen görünümleri dikkate alır. – Janusz

+0

Cevabı beğendim ve işe yarar bir şey bulmamı sağladı. Yine de adaptördeki pozisyonu olan childAt kullanarak çalışmaz. FetFirstVisiblePosition kullanırsanız, onu getItem kullanarak yeniden adaptöre aktarmanız gerekir. Bu yüzden daha doğru bir adaptör .getItem (listview.getFirstVisiblePosition) olur. Yine de, bu durumda op olarak sorulan manzaraya sahip değilsiniz. Yine de, bunu işaretlediğiniz için teşekkürler. –

3

listView.getChildAt(listView.getFirstVisiblePosition()) ilk görünür öğeyi verir
AMA yarı görünür liste öğesi olabilir.

ilk tamamen görünür liste öğesini almak için,

if (listView.getChildAt(0).getTop() < 0) { 
    int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1; 
} 
0

Aşağıdaki kodu kullanabilirsiniz:

for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) { 
     View listItem = conversationListView.getChildAt(i); 
} 
0

listView.scrollBy (0, -40);

Çok iyi çalışıyor

İlgili konular