我正在使用自定义的SimpleOnGestureListener来检测长按和轻按,然后在具有选择器的ListView上实现它。

现在,当长按列表中的一个项目时,我将启动一个上下文操作模式,然后在每次调用singleTapUp之后,我都会将该项目索引添加到一组选定的项目中。 我还使用非常基本的set实现了切换逻辑。

切换时,我还要检查该索引是否映射到从调用得到的稀疏布尔数组中的布尔值

getCheckedItemPositions() 

在ListView上。 如果索引不在选定的项目中,我将其添加并调用

listView.setItemChecked(index, true)

否则我将其从集合中删除并致电

listView.setItemChecked(index, false)

现在,我的问题是长按时不会启动其激活背景的第一个启动动作模式回调的项目,而在此之后我单击的所有后续项目都会启动。

我还观察到如果我不打电话

setItemChecked() 

明确地,那么我必须长按每个项目以保留激活的背景,单击项目不会更改背景。

有人可以帮助我找出一种干净的方法来完成我想要实现的目标吗? 任何帮助都感激不尽。

这是我正在使用的选择器--->

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:state_activated="true"
        android:drawable="@drawable/blue_highlight"/>

    <item android:state_activated="false"
        android:drawable="@drawable/plank_idle"/>

</selector>

#1楼 票数:0

将子项的根布局作为框架布局,并将其属性设置为

机器人:前景= “机器人:ATTR / activatedBackgroundIndicator”

多数民众赞成在为我工作

#2楼 票数:0 已采纳

好的,最后,经过大量的头部抓挠,结果证明是设计不良的情况,因此,我认为我会发布答案,以防万一其他人意外做错了此事。

我从不应该使用SimpleOnGestureListener来检测诸如onSingleTapUp()和onLongPress()之类的基本事件,它们在AdapterView类中的替代项分别是OnItemClickListener()和OnItemLongClickListener()。

使用这些侦听器,可以通过AdapterView有效地处理状态,并且永远不会出现问题。

  ask by trpride translate from so

未解决问题?本站智能推荐:

2回复

如何在ListView中更改列表项背景?

我想在ActionBarSherlock中使用上下文菜单 ,但实际上不允许使用ListView.CHOICE_MODE_MULTIPLE_MODAL 。 我已经为列表中的多选项目创建了自己的实现,但是问题是(实际上,在其他情况下这是一个很大的功能) android重用了ListView 视
1回复

使用CAB在ListView中进行多项选择

我正在为片段中的 列表设置上下文操作栏 。 在Android的HONEYCOMB之前的版本中,使用ActionBarSherlock获取具有多个选择的 CAB 。 我正在讲授本教程 ,但长按后应用程序崩溃 。 这是我的代码 : 这是LogCat中的错误: 很抱歉很长
1回复

Android:ActionBox的CheckBox OnChecked侦听器

问题:使用api获得了我正在使用的应用程序的复杂性。 api调用包括将api的响应处理到如下的listView中: 因此,对于listView中的这种布局类型,需要一个自定义(ArrayList)适配器,其代码如下: 需要帮助 ActionMode现在将在选中时生成Action
3回复

如何在列表视图项中设置textview选择器?

我想在按下listview项目时更改textiew颜色和listview项目的背景颜色。 我被设置为可绘制选择器到列表视图,并设置颜色选择器为文本视图。 每个选择器都可以正常工作,但不能同时工作。 例如,按listview> listview选择器起作用,textview选择器不
3回复

每第四个列表视图项通过使用选择器而不是仅选择一个 android 来标记

嘿伙计们,我现在正在研究一个大学项目,并且有一些我随机发现的问题。 实际上,我必须为即将发生的事件创建一个应用程序 (android),用户可以在其中查看概览中的所有事件并可以标记他最喜欢的事件。 我有一个 listview 对象,它显示 List<> 中的所有项目我想让用户有机会标记
1回复

为什么列表视图中的第一项在平板电脑上使用其他选择器?

这是在Google Nexus 10上发生的,并且在手机上可以正常使用 因此,在发布任何图像之前,我需要一定的声誉,但是您可以在此处查看: http : //i.imgur.com/2tG6b0h.png 除了涉及第一项之外,listview的运行都非常完美。 它使用不同的颜色绘
2回复

自定义列表视图的选择器“更改ListView背景 - 奇怪的行为”

我正在使用本教程,并且想为此列表视图添加选择器。 我尝试了一些代码,但没有用。 我该怎么做。 我将代码用作list_selector.xml 和我的列表视图
2回复

可以为ListView的cacheColorHint设置选择器吗?

我想将选择器设置为ListView的colorCacheHint: 但是将其作为缓存颜色提示无效。 是否可以根据ListView的状态更改cacheColorHint? 还是我错过了什么?