Android 无法在listview中仅设置一个选中的复选框

Android 无法在listview中仅设置一个选中的复选框,android,listview,checkbox,Android,Listview,Checkbox,我有一个listview,listview中的每个项目都包含一个复选框。我的问题是一次只想设置一个选中的复选框。另一个问题是,当我按顺序3选择一个复选框时,当我上下滚动时,复选框会按不同的顺序5或8随机选中 您能帮我解决这个问题吗将您的listview设置为: lvSelectLocation.setChoiceMode(ListView.CHOICE_MODE_SINGLE); ArrayAdapter<String> adptr = new ArrayAdapter<Str

我有一个listview,listview中的每个项目都包含一个复选框。我的问题是一次只想设置一个选中的复选框。另一个问题是,当我按顺序3选择一个复选框时,当我上下滚动时,复选框会按不同的顺序5或8随机选中 您能帮我解决这个问题吗

将您的listview设置为:

lvSelectLocation.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
ArrayAdapter<String> adptr = new ArrayAdapter<String>(Location.this, android.R.layout.simple_list_item_single_choice, locationList);
lvSelectLocation.setChoiceMode(ListView.CHOICE\u MODE\u SINGLE);
ArrayAdapter adptr=新的ArrayAdapter(Location.this,android.R.layout.simple\u list\u item\u single\u choice,locationList);
仅处理McClick:

lvSelectLocation.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                    Selected = arg0.getItemAtPosition(arg2).toString();
            }
        });
lvSelectLocation.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
Selected=arg0.getItemAtPosition(arg2.toString();
}
});

Android会自动回收listview视图,因此,当您滚动时,选中的选项是recycle。为此,您必须将所选列表项设置为ArrayList。

您可以使用API演示了解此实现的最佳方式。 看一看。 列表视图中有一个
CHOCIE\u模式
选项,您可以将其设置为
CHOCIE\u模式
。简单的代码如下-

public class List10 extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_single_choice, GENRES));

        final ListView listView = getListView();
        listView.setItemsCanFocus(false);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }
    private static final String[] GENRES = new String[] {
        "Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
        "Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
    };
}
公共类List10扩展了ListActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_single_choice,tyres));
最终ListView ListView=getListView();
setItemsCanFocus(false);
listView.setChoiceMode(listView.CHOICE\u MODE\u SINGLE);
}
私有静态最终字符串[]类型=新字符串[]{
“动作”、“冒险”、“动画”、“儿童”、“喜剧”、“纪录片”、“戏剧”,
“外国”、“历史”、“独立”、“浪漫”、“科幻”、“电视”、“惊悚片”
};
}

这是因为listview回收机制的工作方式。您需要发布相关的适配器代码,可能您需要的是单选按钮,而不是复选框。另外,为了获得更好的响应,发布相关代码。在listview对象中选择一个布尔值进行检查并取消选中,如果选中true和false,则更改其值。如果取消选中,则使用复选框图像,例如checked.png和unchecked.png,根据检查状态使用它。我知道,当我上下滚动时,每个项目,listview被重新绘制。你知道我在哪里可以得到关于它的清晰概念吗?欢迎。如果答案有帮助,请选择作为正确答案。如果是RecycleService,我如何处理它检查此链接:和