如何在android listview中启用单选按钮?

How to enable radio button in android listview?

提问人:Shadow 提问时间:5/30/2023 最后编辑:Remc4Shadow 更新时间:5/31/2023 访问量:50

问:

我想在android listview中启用单选按钮。我不想使用任何自定义适配器来显示单选按钮。

这是我的代码:

private String[] items = {"Item 1", "Item 2", "Item 3", "Item 4"};
View contentsView = inflater.inflate(R.layout.trusted_credential_list_container, parent, false);

ListView mList = (ListView) contentsView.findViewById(R.id.cert_list);
mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
        android.R.layout.simple_list_item_1, items);
mList.setAdapter(adapter);

在 xml 中,

<ListView
    android:id="@+id/cert_list"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:choiceMode="singleChoice">
</ListView>

尽管我使用 choiceMode 作为 singleChoice,但为什么单选按钮不显示?

我在只有 textview 的自定义适配器中使用的第二种类型没有单选按钮:

ListView mList = (ListView) contentsView.findViewById(R.id.cert_list);
mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

/*ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
        android.R.layout.simple_list_item_checked, items);
mList.setAdapter(adapter);*/

ArrayList<User> arrayOfUsers = User.getUsers();
// Create the adapter to convert the array to views
CustomUsersAdapter adapter = new CustomUsersAdapter(getActivity(), arrayOfUsers);
mList.setAdapter(adapter);

在这里我也尝试使用,但它不起作用mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

列表视图 android-listview android-radiobutton

评论

0赞 Remc4 5/30/2023
请问您为什么不使用RecyclerView?ListView 有点不推荐使用。
0赞 Shadow 5/30/2023
因为根据要求,我不应该将代码从 ListView 更改为 RecyclerView

答:

0赞 K M Rejowan Ahmmed 5/30/2023 #1

您正在使用的列表项布局 (android.R.layout.simple_list_item_1) 不包含 RadioButton,这就是您在列表中看不到任何 RadioButton 的原因。

如果要为 ListView 中的每个项显示 RadioButton,则需要使用不同的布局。Android 为此提供了一个内置布局:android。R.layout.simple_list_item_single_choice。

您可以替换android。R.layout.simple_list_item_1 android。R.layout.simple_list_item_single_choice ArrayAdapter 中。

ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
    android.R.layout.simple_list_item_single_choice, items);
mList.setAdapter(adapter);

评论

0赞 Shadow 5/30/2023
所以这是唯一的办法?没有别的办法了吗?如果我使用没有单选按钮的自定义适配器怎么办?
0赞 Remc4 5/30/2023
如果要使用 ListView,则使用带有单选按钮的布局是唯一的选择。但是您可以使用自定义布局。打开看看它应该是什么样子。您可以创建自己的布局资源文件,只需确保使用相同的 ID。android.R.layout.simple_list_item_single_choice
0赞 K M Rejowan Ahmmed 5/30/2023
@Shadow使用自定义适配器,您可以添加任何东西,天空就是极限。但是当你使用'android.R.layout.simple_list_item_1“这就是我建议”android.R.layout.simple_list_item_single_choice'。两者都是 ArrayAdapter 的 Android 默认资源。