2

私はしばらくの間、この問題を解決しようとしてきましたが、思いつく限りのさまざまな Google 検索を使い果たしました。私は Android の初心者ですが、基本的なことはほとんど理解しています (と思います)。とにかく、複数列レイアウトのスプレッドシート スタイルでデータのリストを表示しようとしています。そのために ListView を使用しています。これは、ユーザーが行をクリックしてデータをより詳細に表示できるようにする必要があるためです。SimpleAdapter を使用して完全に動作していますが、データ量が最大 500 エントリまで大きくなる場合があるため、ユーザーが黒い画面を 20 秒間見つめる必要がないように、Lazy Loader システムに切り替えたいと考えました。すべてがロードされている間。Lazy Loader の部分でなんとかなると思いますが、できません。

私の SimpleAdapter コードの例を次に示します。

SimpleAdapter アダプター = new SimpleAdapter(this, fillMaps, R.layout.grid_item, from, to);

fillMaps は、挿入される HashMaps のリストです。「grid_item」は、エントリが挿入されるレイアウトです。「from」は、使用する列名 (または HashMap のキー) の配列です。「to」は、「grid_item」に入力される TextView アイテムの配列です。これを ArrayAdapter に変換する方法はありますか? または、SimpleAdapter を使用して遅延読み込みを行う方法は?

前もって感謝します!

4

2 に答える 2

1

他の人のためにこの問題を解決するために、これが私がそれを完全に機能させるためにしたことです:

  • 行の文字列を含むEntryという独自のクラスを作成しました
  • ArrayAdapterを拡張するカスタムアダプタを作成しました。コンストラクターの場合、Entry型のArrayListをコンストラクターに渡します。
  • UIの効率を高めるためにViewHolderを作成する
  • 行レイアウトxmlを膨らませて、リストビューに追加します

遅延読み込みを機能させるには:

  • カスタムアダプタに、アダプタにすでにあるArrayListにエントリオブジェクトの新しいArrayListを追加するメソッドを追加しました
  • onScrollListenerを作成し、いくつかのデバッグテストから、一番上の表示アイテムと残りのエントリが合計エントリと等しい場合、一番下までスクロールされたことがわかりました。
  • 下部が検出されたら、fetchメソッドを呼び出してさらに30エントリを取得し、作成したaddメソッドを使用してこれらのエントリを追加し、ArrayAdapterのnotifyDataSetChanged()メソッドを使用して、新しくロードされたアイテムを表示します。
于 2011-07-22T15:35:47.393 に答える
0

独自のアダプターを作成するだけです。あなたの拡張するあなたActivityを収容するあなたの中にプライベートなクラスを作成します。抽象メソッドに入力し、必要に応じてデータを表示します。明らかに有用ですが、独自のアダプターからより多くの牽引力を得ることができ、それらを作成することは実際には難しくありません。ListViewBaseAdapterSimpleAdapter

于 2011-07-14T17:47:55.217 に答える