0

BaseAdapter を使用してリスト ビューにデータを入力しています。アダプターのコンストラクター内で content 変数を初期化しています。コンテンツはシングルトン インスタンスです。コンストラクターは、コンテンツ変数を設定する唯一の場所です。notifyDataSetChanged() を呼び出すと、新しいデータが変数にどのように取り込まれるか。私が知る限り、コンストラクターはオブジェクトの作成時に一度だけ呼び出されます。次に、 getView() が呼び出されるたびにデータを取得する必要があります。基本的に、notifyDataSetChanged が呼び出されたらアダプタ内のデータを更新する方法は? setData(Content) のようなアダプターにいくつかのパブリック メソッドを含めることができます。しかし、コンテンツを設定するためにオーバーライドできる BaseAdapter が提供するいくつかのメソッドを探しています。

MyAdapter extends BaseAdapter {

List<ContentItems> mContent;
public myAdapter() {
  mContent = Content.getInstance().getContent();       
}

public View getView(int position, View convertView, ViewGroup parent) {
  mContent.get(position)
  //using the content create view and return
   }
}
4

1 に答える 1

0

notifyDataSetChanged mContentを呼び出すと、必要なものはすべて揃っていると言えます。mContent は自動的に更新され、getView メソッドでビューにデータを入力できます。
getView は、notifyDataSetChanged を呼び出すと自動的に呼び出されます。正しく実装すると、新しいデータがビューに配置されます。

PS: これが重要かどうかはわかりませんが、getView は画面に収まる位置に対してのみ呼び出されます。最初に表示されていたよりも多くのデータを取得した場合、データを保持するビューが表示されると (たとえば、ListView があり、下にスクロールし始めると)、getView は他のデータをレンダリングします。

于 2013-01-22T08:29:17.043 に答える