2016-07-14 2 views
2

私はアンドロイドプログラミングには新しく、最近私はそれについて多くのことを読んできました。 ListViewの機能の1つは、私が正しく理解していれば、ビューをリサイクルして、アイテムが画面外にあるときに新しいデータで置き換えるということです。ListViewは自動的にビューをリサイクルしますか?

ほんの数分前に、私は無限のスクロールについて読んでいましたが、RecyclerViewはそのような機能を実装する人気の高い選択肢の1つでした。だから私はRecyclerViewを探して、このvideoには、RecyclerViewは、新しいデータのためにそれを再利用するためにビューを自動的にリサイクルすることが言及されています(その違いをListViewと比較する方法として)。

私はリサイクルメカニズムについてListViewを誤解しましたか?リサイクルしても、実際にどのように実装しているのですか?

+0

いいえ、それはありませんが、2番目の 'View convertView'パラメータとして' Adapter#getView'メソッドでリサイクルされたビューを提供します – pskink

答えて

3

リサイクルビューは自動的にリサイクルします。 ListViewのアイテムをリサイクルするには、アダプタクラスの内部でこの変更を行う必要があります。

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

    ViewHolder holder; 

    if (convertView == null) { 
     //brand new 
     convertView = LayoutInflater.from(mContext).inflate(R.layout.days_list_item, null); 
     holder = new ViewHolder(); 

     // below is variables that will be different in your case 
     holder.numberOfDays = (TextView) convertView.findViewById(R.id.eventDays); 
     holder.sinceOrUntil = (TextView) convertView.findViewById(R.id.eventType); 
     holder.eventTitle = (TextView) convertView.findViewById(R.id.eventTitle); 
     holder.daysText = (TextView) convertView.findViewById(R.id.DaysText); 

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

    // rest of the code 
} 

詳細については、thisリンクを参照してください。

関連する問題