1

さまざまな Bitmaps を表示する GridView を作成しました。ユーザーがセルを選択すると、その背景色が変わるようにしたい。これが私がやっていることです。私の ImageAdapter extends BaseAdapter には、次のコード行が含まれています getView 関数

if(videoObjects.get(position).isSelected)
{
        gridView.setBackgroundColor(Color.BLUE);
}
else
{
        gridView.setBackgroundColor(Color.TRANSPARENT);
}

私の GridView には、onItemClick に次のコードを持つ OnItemClickListener があります。

   userVideos.get(postion).isSelected=!userVideos.get(postion).isSelected;
    videoBitmapsAdapter.notifyDataSetChanged();

これにより、ブール変数が切り替えられ、アダプターが再描画されます。しかし、選択は機能しません。

敬具。

4

1 に答える 1

2

2 つの状態を持つ背景としてセレクターを使用する方がよい場合があります。

<selector>
 <item state_selected="true" drawable="yourbg" />
 <item state_selected="false" drawable="otherbg" />
</selector>

次に、あなたの

 onItemClick(View v, ViewGroup parent, int position){
  if (this.previousSelectedView != null) this.previousSelectedView.setSelected(false);
  v.setSelected(true);
 }

そうすれば、グリッドビュー全体を無効にする必要はありません。現在選択されているグリッドアイテムへの参照を保持する必要があるため、別のアイテムがクリックされたときに選択を解除できます。

(このコードはテストされていません)

于 2012-08-28T08:11:22.660 に答える