Android:自定义图库setSelection()问题

时间:2012-01-27 18:28:53

标签: java android android-widget android-gallery android-adapter

我有一个扩展的BaseAdapter,它将LinearLayout子项(每个中的ImageView和TextView)连接到自定义Gallery。

当我第一次启动Activity时,我想调用setSelection(position)以使ImageView将其选择器更改为“选定”图像。一旦我在随后选择的孩子身上浏览了Gallery,这就行了,但不是第一次启动应用程序。

我的选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" 
    android:drawable="@drawable/home_image_select" /> 
<item android:state_selected="false" 
    android:drawable="@drawable/home_image" /> 
</selector>

我的第一个猜测是在调用setSelection()之后调用适配器上的notifyDataSetChanged(),我尝试这样做:

((CustomAdapter) gallery.getAdapter()).notifyDataSetChanged();

那没有做任何事情。我还尝试覆盖Gallery类的setSelection()来执行此操作:

View v = this.getAdapter().getView(position, null, this);       
((ImageView) v.findViewById(R.id.gallery_image)).setSelected(true);

这也不起作用。我缺少什么或者可以试试?

2 个答案:

答案 0 :(得分:0)

我通过覆盖Gallery的setSelection()找到了我自己问题的解决方案(毕竟它有用)。

 @Override
public void setSelection(int position) {
    super.setSelection(position);

    View v = this.getAdapter().getView(position, null, this);
    v.setFocusable(true);
    v.requestFocus();
}

答案 1 :(得分:0)

我认为你不应该调用notifyDataSetChanged(),当基础数据集发生变化时,选择状态将被清除。

只需致电setSelection(position),即可在我的应用中使用。