Android jellybean上不显示Listview选择

时间:2013-02-04 23:42:39

标签: android listview android-4.2-jelly-bean

我有一个listview,已经按预期工作了一段时间。最近,用户将他们的设备软件更新为JellyBean,现在按下时列表视图选择不会更新。

在后台,onTouchEvent()方法触发,(然后是适配器的onItemClick())并且选项设置在“引擎盖下”,它根本不显示为选中状态。但是,如果现在旋转设备并更改方向,则重绘时会显示选择突出显示!

我已经搜索了其他问题,我找到的最接近的是被覆盖的onAttachedToWindow()方法,而不是调用它的超级实现,但是这不是这里的情况!

有没有其他人在JellyBean上看到类似的问题,并知道解决方案?

2 个答案:

答案 0 :(得分:0)

在每个选择上添加了对adapter.notifyDataSetChanged()的调用。

不太理想,因为我怀疑大型数据集的性能会受到影响。

答案 1 :(得分:0)

更好地解决这个问题的方法是使用listview的invalidateViews()函数。

ListView.invalidateViews()用于告诉ListView使其所有子项视图无效(重绘它们)。当 Adapter.notifyDataSetChanged()时,是告诉适配器的观察者正在调整的内容已经改变。

在这种特殊情况下,ListView.invalidateViews()似乎是一个更好的选择,因为您的数据集未更新,您只需要重绘视图。

在你的OnItemClick中插入listview.invalidateViews(),你就可以了。

public void onItemClick(AdapterView<?> av, View v, int position,long id) {
            // TODO Auto-generated method stub
                    listview.invalidateViews();
            /*  YOUR   CODE 
                                GOES   HERE    */          
        }
    });

您也可以对GridView使用相同的功能。