6

私は自分のものを使用してBaseAdapter (standingsListAdapter)ListView (standingsLV)ます。アダプターを設定すると:

standingsLV.setAdapter(standingsListAdapter);

getViewTypeCount()と呼ばれます。しかし後で、アダプターに新しいデータを設定すると:

standingsListAdapter.setData(data);

setData(data)新しいデータ呼び出しを設定した後notifyDataSetChanged():

public void setData(StandingsModelWrapper data) {
    groupsData.clear();
    if (data != null) {
        groupsData.addAll(data.getModel());
    }
    notifyDataSetChanged();
}

メソッドgetViewTypeCount()は再度呼び出されません。なんで? アダプターに getViewTypeCount() の再チェックを強制する方法は?


なぜこれが必要なのですか?

  • リストのすべての行にテーブルを表示します。テーブルの長さ (行数) が異なります。
  • テーブルの長さを変更できるように、アダプタに新しいデータを設定したい

そのため、新しいデータがリスト アダプターに来るたびにビュータイプの数を再計算する必要があります。

4

2 に答える 2

6

これは不可能だと思います。

GetgetViewTypeCount()の実装は、アダプターの定義の一部です。アダプタの実際のデータがその時点でどのようなものであるかに関係なく、保持できるすべての可能なタイプのデータを定義します。

getViewTypeCountフレームワークによって呼び出され、アダプターが保持するさまざまなタイプのデータ間で大きく異なる可能性のあるリスト項目ビューを適切にリサイクルします。アダプタでデータを変更しても、ビューは既存の定義/実装に従って再利用されますgetViewTypeCount

を再度呼び出す場合はgetViewTypeCount、新しいアダプターを作成し、この新しいアダプターをリストビューのアダプターとして設定します。

于 2013-02-26T21:36:51.623 に答える
1

私は試してみます:

standingsListAdapter.notifyDataSetChanged();
于 2013-02-26T21:05:36.770 に答える