4

我有一个扩展的BaseAdapter,它将LinearLayout子元素(每个中的ImageView和TextView)连接到自定义图库。Android:自定义图库setSelection()问题

当我第一次启动我的活动时,我想调用setSelection(position)以使ImageView将其选择器更改为“选定”图像。一旦我将图库扔到后续选定的孩子身上,这种方法就行得通,但不是第一次启动该应用程序。

我的选择:

<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> 

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

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

这没”不要做任何事情。我也尝试覆盖Gallery类的setSelection()来做到这一点:

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

这也行不通。任何我失踪或可以尝试?

回答

0

我找到了我自己的问题的解决方案,通过覆盖画廊的setSelection()(它终究工作)。

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

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

我想你不应该叫notifyDataSetChanged(),当基础数据集改变选择状态将被清除。

只需拨打setSelection(position),它就可以在我的应用程序中使用。