0

クリックすると展開される listViewItems を含むカスタム ListViews をいくつか作成しています。大きな問題なく最初のものを作成し、クリックすると listViewItems が正しく展開されます。

今、私は別の ListView を構築していますが、それには複数の種類のアイテムが含まれているという違いがあります。このため、adaper にデータのリストではなくビューのリストを含め、プロンプトが表示されたときにビューを作成するのが便利であることがわかりました。それらのために getView(XX) を使用します。

アクティビティを前後に入れ替えて再描画するまで、新しいリストの項目が展開されないことを除いて、すべて正常に機能します。最初のリストビューの実装を模倣するようにテストしました (いくつかの欠点があります)。これにより、正しく再描画されます。

主な違いはこれら 2 行です。最初の行は機能しますが、2 番目の行は再描画されません。

return new TransactionChild(context, attrs, transactions.get(position));

.

return (View) children.get(position); 

これを修正する最善の方法は何ですか? リスト全体を強制的に再描画してみてください(ビューを展開すると残りが下に移動します...)? または、ListViewまたはアダプターのいずれかでできることはありますか?

助けてください:D

4

1 に答える 1

0

グループに子がなく、グループを開いたときと閉じたときに異なるレイアウトを持つ ExpandableListView を使用できます。

通常の ListView を使用している場合は、Adapter の getItemViewType() メソッドを使用することをお勧めします。このようにして、アイテムのリストを通常のままにしてクリックし、getView でタイプを確認してレイアウトを変更します。クリックリスナーでは、クリックされたアイテムのタイプを変更し、データが変更されたことを通知します。

于 2013-04-23T13:14:50.173 に答える