Android ListView singleChoice choiceMode不能正常工作

时间:2015-07-26 04:00:25

标签: android listview android-listview

我正在尝试创建一个简单的界面,允许用户通过点击选择列表中的单个项目,然后按一个按钮将其删除。我将列表中的选择模式设置为singleChoice,但每当我点击一个项目时,它会突出显示一小段时间后恢复正常。每当我按下删除按钮时,getSelectedItem和getSelected View都会返回null。这是ListView代码:

<ListView android:id="@+id/times"
    android:choiceMode="singleChoice"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/time"
    android:layout_above="@+id/every"/>

这是在remove上调用的方法,其中list是ListView,而adapt是ArrayAdapter,使用ArrayList。

public void remove(View view)
{
    System.out.println(list.getSelectedItem()+"\n"+list.getSelectedView());
    adapt.remove((String)list.getSelectedItem());
}

编辑:我试图让这个应用程序的最低API级别为10,以防有所帮助。

2 个答案:

答案 0 :(得分:2)

列表项目无法按设计开箱即可选择。您可以找到有关here的更多信息:

  

想象一下一个简单的应用程序,例如ApiDemos,它显示了一个列表   文本项目。用户可以使用自由地浏览列表   轨迹球,他们也可以使用他们的滚动和推送列表   手指。此方案中的问题是选择。如果我选择一个   列表顶部的项目,然后将列表推向   底部,选择会发生什么?它应该保留在   项目并滚动屏幕?在这种情况下,如果我会发生什么   然后决定用轨迹球移动选择?或者更糟,如果我   按下轨迹球以对当前所选项目进行操作,即   屏幕上没有显示。仔细考虑之后,我们决定了   完全删除选择

要使它们可选,有2个选项:

  1. 使用行项目布局android.R.layout.simple_list_item_single_choice,为每行呈现单选按钮。 使用ArrayAdapter,您可以将此布局用作:

    listView.setAdapter(new ArrayAdapter<>(this,
                        android.R.layout.simple_list_item_single_choice,
                        dataArray));
    
  2. 使用选择器作为背景。你可以参考这篇文章知道如何做到这一点 - how to set choice mode single for listview with images

答案 1 :(得分:1)

这是两个问题:

  1. &#34;选择突出显示&#34; - 为此,您需要创建,具体取决于您希望如何突出显示项目可绘制/颜色选择器 - 使用state_activated =&#34; true&#34;
  2. 示例drawable:

    pod update
    1. 在任何选择模式下ListView中的选择除了NONE实际上是在处于检查状态下处理,以便获得getCheckedItemPosition所需的当前选择:http://developer.android.com/reference/android/widget/AbsListView.html#getCheckedItemPosition()