0

我已经看到一些关于 VB 和 C# 的问题,但对于 Java/Android 则没有。基本上,我有一个包含所有数字的值的 ArrayList,并且我想为用户提供删除特定条目的选项。我想要做的是当用户单击“删除条目”按钮时,会出现一个浮动上下文菜单,其中填充了 ArrayList 条目的选项,它们按照它们出现在列表中的顺序排列。当他们单击菜单中的数字时,它会从 ArrayList 中删除。

我对菜单创建相当陌生,但我已经多次通过 xml 创建它们。这是我第一次尝试使用不确定数量的项目动态创建浮动菜单。

4

1 回答 1

1

如果从用户体验的角度来看,数字列表相当短(即用户不想搜索/过滤列表),您可以使用传统的单选列表 AlertDialog。您只需要稍微修改文档中的示例:

final List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

final CharSequence[] numbers = new CharSequence[list.size()];
for (int i = 0; i < list.size(); i++) {
    numbers[i] = list.get(i).toString();
}

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Remove entry:");
builder.setItems(numbers, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        list.remove(which);
    }
});
builder.create().show();

正如您在文档中看到的那样,该setItems方法被重载以接受CharSequence数组。所以基本上,您需要在创建Dialog. (String实现CharSequence,从而toString()完成工作。)

在 中OnClickListener,所选菜单项的索引作为which方法传递onClick。由于菜单项索引和列表项索引相同,您可以使用which从实际列表中删除该项目。

相同的方法适用于浮动列表,只需根据区域设置对其进行格式化。

于 2013-09-08T16:50:16.337 回答