2010-10-27 21 views
14

Benim ListView (CursorAdapte r kullanarak) ile ilgili bir sorun yaşıyorum. getListView().getLastVisiblePosition()'u aradığımda -1 alıyorum. Listem öğelerle doldurulduğundan bu bir sorundur. Ek olarak, listede nereye kaydım olursa olsun getListView().getFirstVisiblePosition() her zaman 0 değerini döndürür. Herhangi bir fikir?getLastVisiblePosition dönen -1

Ben startManagingCursor dışarı yorum yaparsanız O startManagingCursor

@Override 
    public void changeCursor(Cursor cursor) { 
     super.changeCursor(cursor); 
     MyActivity.this.mCursor = cursor; 
     //startManagingCursor(MyActivity.this.mCursor); 
    } 

ile ilgisi vardır, her şey gayet iyi çalışıyor. Ayrıca Cursor'u değiştirmeden önce stopManagingCursor() eklemeyi denedim ve yine de aynı sorunla karşılaştım.

+0

Herhangi biri ek fikir sunabilir mi? Id gerçekten startManagingCursor kullanmaktan hoşlanıyor – Andrew

+0

'.getLastVisiblePosition()' aradığınızda liste görünümü zaten doldurulmuş mu? –

cevap

0

Tahminim, adaptörünüzde getItem(int position) ve getItemId(int position) yöntemlerinin doğru tanımlanmadığıdır.

+0

Hiç tanımlanmamışlar. Hiç olmadılar. StartManagingCursor'u kullanmaya başladığıma kadar bu daha önce gayet iyi çalışıyordu (çünkü "Devre dışı bırakılan veya kapatılmayan bir imlecin sonlandırılması" hatalarını alıyordum). Ayrıca, bu iki yöntemin bunu nasıl etkileyeceğini de görmüyorum. Android'i ilk ve son görülebilir pozisyonlar için istiyorum; veri için değil. – Andrew

+0

Evet, ve eminim getLastPosition() bu bilgiyi belirlemek için bu 2 yöntemi kullanır – Falmarri

+0

Neden? Ayrıca, bu yöntemleri geçersiz kılmadığımdan, neden ManagingCursor'u başlatmadığımda her şey iyi çalışır, ancak yaptıktan sonra başarısız olur? Her iki durumda da, bu yöntemleri – Andrew

32

Bunun nedeni, getListView(). GetLastVisiblePosition() aradığınız anda liste görünümünün oluşturulmamasıdır. Görüntünün görünüm sırasına aşağıdaki gibi ekleyebilirsiniz:

listview.post(new Runnable() { 
    public void run() { 
     listview.getLastVisiblePosition(); 
    } 
}); 
+0

Adamı aşmadım, bunun için çok teşekkürler. – Yar

+0

Bu anlamlı değil .. Teşekkürler luciferleo. –

+0

Bu kabul edilen cevap olmalı! – Virthuss

0

Hatta aynı sorunla karşılaştım. İşin aslı, getLastVisiblePosition() yalnızca listenin ilk öğesinde olduğunuzda ve geri kalanı için geri döndüğünüzde çalışır. Yani ne yaptım ki, ben aşağıda belirttiğim tam görünüm pozisyonu,

int LastPos=(mylist.getLastVisiblePosition()-mylist.getFirstVisiblePosition()); 

Bu şüphesiz kesin son konumunu döndürür öğrenmek için küçük bir hesaplama yaptı.