2012-03-26 20 views
5

Bir XML ayrıştırma kullanarak, her 5 saniyede bir yenilenen bir liste görünümü var. Yenilemeden sonra, listenin mevcut konumu ilk konuma geri döner. Bunu çözmek için herhangi bir yol var mı? o yenilenir olarak son eklenen girdiye Otomatik Kaydırma için liste görünümü istiyorsanız pos, herhangi int, adaptörün tercihen uzunluğu olabilirListe arrayadapter veri güncelleştirildikten sonra en üstteki gönderiye geri dön

+0

Lütfen liste görünümünü nasıl yenilediğinizi bize bildirin. – flo

+0

Muhtemelen liste verilerini temizler ve yeni ayarları yaparsınız. Sen) ( 'public void TimerMethod() { \t \t runOnUiThread (yeni Runnable @Flo http://developer.android.com/reference/android/view/View.html scrollTo (int, int) yöntemini – pleerock

+0

kullanabilirsiniz { \t \t \t public void run() { \t \t \t \t // Toast.makeText (getApplicationContext(), "Merhaba, bu piyush olan" \t \t \t \t // Toast.LENGTH_LONG) .show(); \t \t \t \t ayrıştırma (link); \t \t \t \t setAdapter(); \t \t} \t \t}); bu yöntemi her 5 saniyede çağırır. parse() xml ayrıştırma için ve setAdapter() listadapter – ASP

cevap

3

kullanın lv.smoothScrollToPosition(pos).

public void smoothScrollToPosition (int position) 


Smoothly scroll to the specified adapter position. The view will scroll such that the indicated position is displayed. 
+0

için yeni değerler belirlemek için kullanarak Benim durumum için, bu gerçekten bir kez notifyDataSetChanged() bir kez işe yaramıştı. Cevabınız için – greg7gkb

5

Bir listeyi güncellemek için setAdapter() öğesini kullanarak Android konumu sıfırlar. Bağdaştırıcıyı değiştirmeyi deneyin.

Kullandığınız bağdaştırıcıyı bilmiyorum iki örnek.

ArrayAdapter

adapter = list.getAdapter(); 
if (adapter == null) { 
    // Create new adapter + list.setAdapter() 
} else { 
    adapter.clear(); 
    adapter.addAll(newData); 
    adapter.notify(notifyDataSetChanged()); 
} 

CursorAdapter

adapter.changeCursor(newCursor); 
+0

teşekkürler. İşte ArrayAdapter kullanıyorum. Ama yukarıda bahsettiğin "listeyi" almadım. – ASP

+0

listesi, kullanmakta olduğunuz ListView için duruyor. – flo

+0

İyi bir adamsın @flo –

2

Bu kod size yardımcı olacaktır ....

// get position of listview 
int index = listView.getFirstVisiblePosition(); 
View v = listView.getChildAt(0); 
int top = (v == null) ? 0 : v.getTop(); 

// notify dataset changed or re-assign adapter here 

//re-assign the position of listview after setting the adapter again 
listView.setSelectionFromTop(index, top); 

Alkış :)

+0

mükemmel !!! ... – ajay

-1

bu

deneyin
adapter.notifyDataSetChanged(); 
İlgili konular