2013-05-01 52 views
12

Android Uygulamam için bir sorum var. Uzun süredir aradım ama sorunum hakkında hiçbir şey bulamadım.Android - Mesaj görünümü olarak ters liste görünümü

Senaryo: Ben (Facebook Messenger gibi) Geri döndürme liste görünümü gösterilecek ettik. Kullanıcı en üste kaydırdığında daha fazla mesaj yükleyin.

Sorun: notifiyDataAsChanged() aradıktan sonra, kaydırma aynı değil! Yüklemeden önce tam olarak aynı konumu korumak istiyorum.

ben bu kodu çalıştı:

// save index and top position 
int index = list.getFirstVisiblePosition()+result.size(); 
View v = list.getChildAt(index); 
int top = (v == null) ? 0 : v.getTop(); 

// ... 
// restore 
list.setSelectionFromTop(index, top); 

Ama kaydırma tam değildir yükleme sonrasında aynı.

Bir fikrin var mı?

android:stackFromBottom="true" 
android:transcriptMode="normal" 

son öğe görünümünde zaten sadece altına kayar normale transkript modunu ayarlayarak:

cevap

35

ben size liste görünümü ile TranscriptMode ve StackFromBottom kullanarak içine bakmak gerektiğini düşünüyorum. Bu şekilde, kullanıcılarınız bildirimi değiştirdiğinizde arama yaptığınızda kesinti yaşanmadan önceki listeyi görüntüleyebilir.

+0

teşekkür ederiz. Mesajını anlamıyorum. Eğer 32 nolu öğede olduğumda, bildirim verildikten sonra tekrar n ° 32'de olmak istiyorum! Ama şimdi, bu yöntem çağrıldığında, bu öğe üzerinde değilim ... –

+5

Bu cevap yanıltıcıdır. 'stackFromBottom' nesneleri aşağıya taşır (yığınlar), ters sıra oluşturmaz. Nesneler hala @FlorianMacLanglade'nin sorduğu alttan eklenmiştir (aynı çözümü de araştırıyorum). – Diolor

+0

@Diolor haklı. 'stackfromBottom' istediğiniz şeylerin bir parçasıdır. Diğer bölüm ise burada yanıtlanan ters sıralamdır: http://stackoverflow.com/questions/10941317/inverted-listview-in-android – Chris

2

Bunu, eklediğiniz kodla giderdim, ancak konumu değiştirmeden önce, dizin değişkenini bağdaştırıcıya eklediğim öğe sayısına göre güncelleştiriyorum. Hile yapmak gibi görünüyor.

2

böyle yapın: Yardımlarınız için

Collections.reverse(YourList); // ADD THIS LINE TO REVERSE ORDER! 
YourList.notifyDataSetChanged; 
İlgili konular