の要素をチェックする方法はありgridview
ますか?
メソッドが見つかりません。toggle()
またはsetChecked(true)
、gridview
BaseAdapterを拡張するアダプターがあり、要素がチェックされているときに背景色を変更したい(選択されているだけではありません)。
ListView:GridView.setChoicheMode(MULTICHOICE)
を実行してから、item.toggle()
またはitem.setChecked(true)
チェックの状態をビューに保存します。
編集:
CheckedTextView
チェック状態を保存するために空を追加しました。しかし、これを行うためのよりクリーンな方法はありますか?
Edit2 これでやりたいことができますが、グリッドビューを下にスクロールしてから上にスクロールすると、選択したアイテムが選択されなくなります。
boolean checked = layout.getCheckedItemPositions().get(position);
if(checked){
check.toggle();
view.setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
else{
check.toggle();
view.setBackgroundColor(getResources().getColor(android.R.color.holo_green_light));
}
ここで、layoutはグリッドビューのレイアウトです。アダプタのgetViewメソッドを変更する必要があると思いますが、このコードは機能しません。
CheckedTextView check = (CheckedTextView) layout.findViewById(R.id.txv_grid_check);
boolean checked = check.isChecked();
if(checked){
layout.setBackgroundColor(c.getResources().getColor(android.R.color.holo_green_light));
}
else{
layout.setBackgroundColor(c.getResources().getColor(android.R.color.transparent));
}
編集3
リストまたはグリッドビューをスクロールするとビューが破棄されて再作成されるため、私が望むこと(状態をCheckedTextView要素に格納する)を実行する方法はないと思います。そのため、アイテムの状態をアダプターに処理する必要がありました。チェックされた項目の位置を格納するためにintのHashSetを使用し、グリッドビューからこのリストを処理するためのパブリックメソッドを作成しました。gridviewアクティビティでは、アダプタを取得してからmyadapter.check(int position)またはuncheck(int position)を実行することができます。次に、アダプタのgetView()メソッドで、位置がリストにあるかどうかを確認し、適切な背景色を設定する必要があります。