SORU
23 Ocak 2010, CUMARTESİ


Android Liste Görünümü Tek Satır Yenileme

Aldık sonra ListView, bir ben tek bir satır için veri tek satır güncellemek istiyorum.

Şu anda notifyDataSetChanged(); kullanıyorum ama o View çok yavaş tepki yapar. Başka çözümler var mı?

CEVAP
3 NİSAN 2012, Salı


Romain gibi Adam explained a while back sırasında Google I/O session, en verimli bir biçimde tek bir güncelleme görünümünde bir liste görünümü gibi bir şey (bu bir güncelleme bütün verileri görüntüle):

ListView list = getListView();
int start = list.getFirstVisiblePosition();
for(int i=start, j=list.getLastVisiblePosition();i<=j;i  )
    if(target==list.getItemAtPosition(i)){
        View view = list.getChildAt(i-start);
        list.getAdapter().getView(i, view, list);
        break;
    }

target varsayarsak adaptörün bir öğedir.

Bu kodu almak ListView, sonra da Gözat şu anda gösterilen manzarası, karşılaştırma target madde aradığını her görüntülenen öğeleri görüntüleme, ve eğer hedef arasında olanlar, kapsayan görüntülemek ve yürütmek adaptörü getView üzerinde görüntülemek için yenile ekran.

Bir yan not invalidate çalışmıyor gibi bazı insanların beklediği ve yenileme view getView gibi yapar, notifyDataSetChanged yeniden bütün liste ve arama getview her görüntülenen öğeleri ve invalidateViews de etkileyen bir grup.

Son bir şey, bir de eğer sadece bir satır, bir bakış, bir çocuk ve getView gibi tüm satırı değiştirmek gerekiyorsa ekstra performans elde edebilirsiniz. Bu durumda, aşağıdaki kodu list.getAdapter().getView(i, view, list); (TextView bir metin değiştirme gibi) değiştirebilirsiniz:

((TextView)view.findViewById(R.id.myid)).setText("some new text");

Kod güveniyoruz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kim Barbin

    Kim Barbin

    3 Mayıs 2012
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012