【问题标题】:Android: Custom Gallery setSelection() issuesAndroid:自定义图库 setSelection() 问题
【发布时间】:2012-01-27 18:28:52
【问题描述】:

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

当我第一次启动我的 Activity 时,我想调用 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>

我的第一个猜测是在调用 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);

这也不起作用。有什么我遗漏的或可以尝试的吗?

【问题讨论】:

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


    【解决方案1】:

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

     @Override
    public void setSelection(int position) {
        super.setSelection(position);
    
        View v = this.getAdapter().getView(position, null, this);
        v.setFocusable(true);
        v.requestFocus();
    }
    

    【讨论】:

      【解决方案2】:

      我认为你不应该调用notifyDataSetChanged(),当底层数据集改变时,选择状态将被清除。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-15
        相关资源
        最近更新 更多