私はあなたが次の例のために2つのことを混ぜていると思います - アダプタの作成とデータの設定です。この例では、AFAIKを必要とするArrayAdapter
を使用します。これは、コンストラクタ内のデータです。
があるアダプタにはデファクトスタンダードませんが、ここで私は通常、何をすべきかです:物事の
public class GridViewAdapter extends BaseAdapter {
private final Context context;
private List<DataClass> data = new ArrayList<>();
public GridAdapter(Context context) {
this.context = context;
}
public void setData(List<DataClass> data) {
this.data = data;
notifyDataSetChanged();
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
// usual thing here
}
}
カップルがここに気づくこと。 DataClass
は基本的に、アイテムにデータを埋め込むために必要なすべての情報を保持するデータクラスです。例が示すように、List
にはArrayList
を優先する必要があります。より汎用的で、契約を変更せずにアダプタの実装を変更できるためです。配列が保持するオブジェクトについてコンパイラに何も通知されていない場合は、リストが保持する型と指定しない型を指定する必要があります。
今すぐあなたの質問に答えてください。必要に応じてアダプタを作成できます。私は文脈を渡していますが、あなたはこれを必要としないかもしれません。通常はonCreate
がそれを作成するのに適していますが、いつでも実行できます。
データを受け取ったら、adapter.setData(...)
と呼ぶだけで、アダプタのデータが入力され、データが変更されたことが通知されます。
最後の2つの方法 - setData
とnotifyDataSetChanged
- を分離することもでき、設定データにはデータを設定し、いつでもnotifyDataSetChanged()
を呼び出します。
希望これは
EDIT
を助け、私はあなたがフォローしている例が悪いと言ってとにかくつもりはありませんよ。これはまだ有効な例であり、必要に応じてArrayAdapters
を実行します。私はちょうどあなたが質問が非常に有効であると思うし、例が非常に具体的であるためにあなたは大きな絵を見ていないと思う。
1.いいえ、それはしばしば最高の時です。あなたが必要な情報を持っているときにそれを初期化します – codeMagic
入手しました。どうもありがとう。 –