リストビューのすべての子要素(目に見える要素だけでなく)を修正する正しい方法は何ですか? 私は、既定で、視界がなくなるように設定された画像を持っています。ユーザーがボタンをクリックすると(すべてのアイテムに対して)表示されるようにしたい。Android Listviewすべてのアイテムを変更します
ありがとうございます!
リストビューのすべての子要素(目に見える要素だけでなく)を修正する正しい方法は何ですか? 私は、既定で、視界がなくなるように設定された画像を持っています。ユーザーがボタンをクリックすると(すべてのアイテムに対して)表示されるようにしたい。Android Listviewすべてのアイテムを変更します
ありがとうございます!
リストビューのすべての子要素(目に見える要素だけでなく)を修正する正しい方法は何ですか。
ListView
についての1つのことは、リスト項目のすべてが(任意の時点で)生成されるわけではありません。
たとえば、リストAdapter
には1000個のアイテムが含まれていますが、ListView
には10個しか表示できないとします。 1000個のリストアイテムをすべて作成することは、リソース(例えば、メモリ)の非常に悪い浪費である。
代わりに、わずか10の可視項目が作成されると、画面の上部または下部オフ一方をスクロールするたびに、消失したものがAdapter's
getView
方法にconvertView
として渡されることによって、再循環されます。
getView (int position, View convertView, ViewGroup parent)
、あなたがgetView
メソッドを使用して上書きしたいものは何でもAdapter
タイプ拡張する必要が求めているものをすることができません。その方法でconvertView
がnull
かどうかをチェックします。そうであれば、リスト項目レイアウトのインスタンスを展開します。 nullでない場合は、UI要素(TextView
,ImageView
など)を再利用してください。
ImageView
要素をすべて表示させるには、showImageView
などのグローバルBoolean
を使用します。これはボタンを押して切り替えることができます。次に、getView
にそれを使用して、ImageView
の可視性を設定するかどうかを決定します。
は、アダプタのgetView()
内部Adapter.getView(...)
おそらく、あなたのListAdapter
のgetView()
のフィールドの値に応じて画像の可視性を設定する必要があります。ボタンをクリックすると、このフィールド値が変更され、ListAdapter.notifyDataSetChanged
が呼び出され、リストビューが更新されます。フィールド値が変更されたため、getView
が呼び出され、イメージが変更されます。
を参照してください、あなたはImageViewのをつかむと消えへの可視性を設定します。ユーザーがボタンをクリックしたときに
ImageView iv = (ImageView)convertView.findViewById(R.id.image_view);
iv.setVisibility(buttonClicked ? View.GONE : View.VISIBLE);
はその後、buttonClicked = true
を設定し、にnotifyDataSetChanged()
を呼び出しますListViewをリフレッシュします。
大きな説明!今それは働いている。 10X :) –