1

単純なことに解決策を見つけるのが難しいことを見て、本当に驚かされることがあります。

私はGridView6列と複数の行を持っています。各アイテムは、背景として色を持つ正方形です。アイテムを選択すると、listSelector設定されているように強調表示されます

<GridView
        android:id="@+id/listFontColors"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="center_horizontal"
        android:layout_margin="8dip"
        android:drawSelectorOnTop="true"
        android:gravity="center"
        android:horizontalSpacing="3dp"
        android:listSelector="@drawable/color_list_selected"
        android:numColumns="6"
        android:padding="0dip"
        android:scrollbars="none"
        android:stretchMode="columnWidth"
        android:verticalSpacing="3dp" />

レイアウトを開いたときにGridView、前に選択したアイテムを強調表示したい。その背後にあるアダプターには、ArrayList<Object>強調表示する必要がある位置を簡単に見つけることができます。問題は、実際のハイライトを実行することです。

私は多くのテストを行いました:

listColors.requestFocus();
listColors.setSelection(9);

if (v != null) {
    v.requestFocus();
    v.setPressed(true);
    v.setSelected(true);
}
listColors.performItemClick(listColors, 9, listColors.getItemIdAtPosition(9));

これはどれもうまくいきませんでした。何か案は?

4

1 に答える 1

3

position最も簡単な方法は、メソッド内の Adapter クラス内で保存してチェックすることgetView()です。

if(selected_position = position){
    view.setBackgroundResource(selected_resource_id);
}
else{
    view.setBackgroundResource(resource_id);
}

そしてnotifyDataSetChanged()、アダプターを呼び出すだけです。

于 2013-04-09T09:20:09.520 に答える