我正在尝试创建一个简单的界面,允许用户通过点击选择列表中的单个项目,然后按一个按钮将其删除。我将列表中的选择模式设置为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,以防有所帮助。
答案 0 :(得分:2)
列表项目无法按设计开箱即可选择。您可以找到有关here的更多信息:
想象一下一个简单的应用程序,例如ApiDemos,它显示了一个列表 文本项目。用户可以使用自由地浏览列表 轨迹球,他们也可以使用他们的滚动和推送列表 手指。此方案中的问题是选择。如果我选择一个 列表顶部的项目,然后将列表推向 底部,选择会发生什么?它应该保留在 项目并滚动屏幕?在这种情况下,如果我会发生什么 然后决定用轨迹球移动选择?或者更糟,如果我 按下轨迹球以对当前所选项目进行操作,即 屏幕上没有显示。仔细考虑之后,我们决定了 完全删除选择。
要使它们可选,有2个选项:
使用行项目布局android.R.layout.simple_list_item_single_choice
,为每行呈现单选按钮。
使用ArrayAdapter,您可以将此布局用作:
listView.setAdapter(new ArrayAdapter<>(this,
android.R.layout.simple_list_item_single_choice,
dataArray));
使用选择器作为背景。你可以参考这篇文章知道如何做到这一点 - how to set choice mode single for listview with images
答案 1 :(得分:1)
这是两个问题:
示例drawable:
pod update