Adapter
クラスのgetView()
メソッドでconvertView
パラメータが使用されていることを教えてもらえますか?ここでArrayAdapter getView()メソッドの "convertView"パラメータとは
はhereからのサンプルコードテイクです:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
Order o = items.get(position);
if (o != null) {
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
if (tt != null) {
tt.setText("Name: "+o.getOrderName()); }
if(bt != null){
bt.setText("Status: "+ o.getOrderStatus());
}
}
return v;
}
は、我々はconvertView
を経由して何を渡す必要がありますか?
データセット内の指定された位置にデータを表示するビューを取得します。ビューを手動で作成するか、 XMLレイアウトファイルから展開することができます。ビューが膨張したとき、あなたがルートビュー を指定するとの付着を防止するために のinflate(int型、android.view.ViewGroup、boolean)を使用しない限り、親ビュー(GridViewコントロール、 リストビューは...)デフォルトのレイアウトパラメータを適用しますその根。
パラメータ
位置 - ビュー私たちが望む項目のアダプタのデータセット内の項目の位置。
convertView - 可能な場合は、再利用する古いビュー。注: を使用する前に、このビューがnullではなく、適切なタイプであることを確認する必要があります。 のデータが正しく表示されるようにこのビューを変換できない場合、このメソッドは新しいビューを作成できます。
親 - 指定された位置のデータに対応するビュー - このビューは、最終的に戻り
戻りに添付されます親。
「ユーザーがスクロールは、新しいビューを作成する必要がある場合には、パフォーマンスのために、リストビューはアダプタにこれ以上convertViewのPARAMで使用されていないことを古いビューを送信しますので、。」あなたは 'ListView'は一度にすべてのビューに値を設定しないと言っていますか? – Tarik
@Braveyard:いいえ。 'ListView'が1.000個のアイテムを保持するとします。メモリにすべてをロードすることはできませんし、画面に表示するには最小量を使用します。 – Macarse
重要な副作用は、ListViewのビューに状態情報を格納することが災害になることです。ビューにではなく、アダプタにアイテムごとの状態を必ず格納してください。 – jjb