6

üzerine GetView() çağırarak ben bir görüntü internetten çekti her satırda görüntüleyen bir ListView ve bir dize var. GeneldeAndroid - ListView - demand

iyi çalışıyor. Ancak görüşlerin (satırların) şişirildiği zaman kontrolü ele almak istiyorum. Satır görünür olduğunda varsayılan olarak, bağdaştırıcının getView() yöntemi çağrılır. Tabii

Bu benim kayıtların birkaç yüz ile ListView var ve ben ListView kaydırma yaparken, getView() yöntem her için çağrılır, altta olanları ulaşmanız gerekir çünkü eğer iyi davranışlardan biri değildir altbilgiye ulaşana kadar satır.

Yani sadece kaydırma sonra GetView aramak istediğiniz ve ListView durdurulmuş/boşta durumundayken, ama nasıl bu konuda gitmek fikrim yok:

İşte

Ben başlamış nasıl:

listView.setOnScrollListener(new OnScrollListener() { 
    @Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
     if(scrollState==SCROLL_STATE_IDLE){ 
      // Invoke get view only on visible items 
     } 
    } 

    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, 
      int visibleItemCount, int totalItemCount) { 

    } 
}); 

Bu benim adaptörün GetView geçerli:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder; 

    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.row, parent, false); 

     holder = new ViewHolder(); 
     holder.title = (TextView) convertView.findViewById(R.id.textView); 
     holder.image = (ImageView) convertView.findViewById(R.id.imageView); 
     holder.position = position; 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 


    holder.title.setText(data.get(position).getTitle()); 
    holder.image.setImageResource(R.drawable.ic_launcher); 
    new LoadImageAsync(data.get(position).getUrl(), holder.image).execute(); 

    return convertView; 
} 

, bana ulaşmak için görünmelidir nerede bazı yön vermek Lütfen bu: ve sadece visib için, sadece kaydırma sonra GetView() Çağrı le öğeler.

+1

onay ApiDemos, bölüm Verimli Adaptör –

+0

@TomislavNovoselec, ipucu için teşekkürler. Bu tartışmaya değer. –

cevap

4

Geçenlerde bu konuda bir makale ... here okuyun. Denemedim ama ses teorisi gibi görünüyor.

Temelde, onlar senin adaptör bir bayrak gibi kaydırma ya da değil ve kullanımı olup olmadığını izlemek için kullandığınız bir boole ekleyerek savunuyorlar. Boole doğruysa (kaydırıyorsanız), yalnızca metin görünümlerini düzeninize çizin. Eğer yanlışsa (kaydırma işlemini durdurduysanız) her şeyi çizersiniz.

Sen notifyDataSetChanged() kullanarak kaydırma değil görünür görüşlerini yeniden çizmek için adaptör söyle.

+0

Bağlantı için teşekkürler. Bu makale, API demolarından örnekler ile bağlantılı olarak hedefime ulaşmamı sağladı. Şimdi en akıllı adaptörüm var. :) –

+0

Aysnchronous çağrısında ek öğeler ekledikten sonra notifyDataSetChanged() yöntemini çağırdığınız için teşekkür ederiz! (android-sorgu kullanarak) –