0

現在、アプリでcwac-mergeを使用していますが、問題に直面しています。

したがって、このリストビューにはさまざまな部分があります。MergeAdapter に追加された最初のものまたは静的ビュー。それらは、アクティブ化/非アクティブ化せずに直接追加されます。

次に、他のアダプターを my に追加し、MergeAdapterですぐに非表示にしsetActive()ます。これらは非同期に入力されますが、前に追加されlistView.setAdapter(adapter)ます。だから私はアダプタごとにこれをやっています:

  1. にアダプターを追加MergeAdapterしますadapter.addAdapter(subAdapter)
  2. で隠しますadapter.setActive(subAdapter, false)
  3. データが取得されたら、取得した項目を subAdapter に追加しsubAdapter.addItems(items)、アダプターを次のように表示します。adapter.setActive(subAdapter, true)

すべてが完璧に機能しており、私のビューは 1 つのことを除いて良好に見えます。のトップ ビューにいくつかのボタンがありますMergeAdapter。クリック動作がおかしい。クリック イベントは、スクロール後にのみ発生することがありますListViewsetActive()関数で遊んだ場合にのみ発生することに気付きました。すべての電話にコメントするsetActive()と、問題を再現できなくなります。複数回クリックしてからスクロールすると、多くのクリックが発生します。

ここにいくつかのスクリーンショットがあります。静的ビューは、画像と 4 つのボタンを含むビューです。次に、動的な部分はアダプターです (伝記、最後に再生された曲、ベスト トラック)。

更新: それぞれをアクティブ化した後に subAdapter.notifyDatasetChanged() を呼び出すことで、なんとか修正できました。それはまだハックであり、毎回機能するとは限りません。

更新:次のことを考えると、これはライブラリでカバーされるべきだと思います:

ただし、基になるアダプターを変更できることに注意してください。したがって、たとえば、CursorAdapter を MergeAdapter に追加し、Cursor を requery() すると、変更は MergeAdapter を介して、MergeAdapter が接続されている AdapterView に反映されます。

リストの一番上 リストの一番下

4

1 に答える 1