Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListActivity(ListView)中带有SimpleCursorAdapter的复选框_Java_Android_Listview_Checkbox_Listactivity - Fatal编程技术网

Java ListActivity(ListView)中带有SimpleCursorAdapter的复选框

Java ListActivity(ListView)中带有SimpleCursorAdapter的复选框,java,android,listview,checkbox,listactivity,Java,Android,Listview,Checkbox,Listactivity,大家好,我知道有很多实现自定义适配器的教程,但我不相信这对我来说是正确的。我有一个自定义项目布局的列表视图,由两个文本视图和一个复选框组成。我有以下代码: list.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> adapter, View view, int position,

大家好,我知道有很多实现自定义适配器的教程,但我不相信这对我来说是正确的。我有一个自定义项目布局的列表视图,由两个文本视图和一个复选框组成。我有以下代码:

list.setOnItemClickListener(new OnItemClickListener(){
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position,
                long rowid) {

            CheckBox c = (CheckBox) view.findViewById(R.id.item_chkbox);
            c.setChecked(!c.isChecked());
            String n = ((TextView) view.findViewById(R.id.item_charName)).getText().toString();
            String p = ((TextView) view.findViewById(R.id.item_playerName)).getText().toString();
            ...
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共控件单击(适配器视图适配器、视图视图、int位置、,
长罗维德){
复选框c=(复选框)view.findViewById(R.id.item\u chkbox);
c、 setChecked(!c.isChecked());
字符串n=((TextView)view.findviewbyd(R.id.item_charName)).getText().toString();
字符串p=((TextView)view.findViewById(R.id.item_playerName)).getText().toString();
...
当我点击列表中的某个项目时,会触发并选中一个复选框,但它不是正确的复选框。它也不是随机的。触发的复选框始终位于列表的另一侧,镜像在列表的中心。例如,如果我有以下列表:

01 2 3 4

点击“0”,4的检查将被触发。如果我点击1,3的检查将被触发。如果我点击2,2的检查将被触发。更奇怪的是,如果我点击0两次,3次检查,然后0次检查。点击第三次,3次取消检查。第四次-0取消检查。这在所有情况下都会继续。我不太清楚发生了什么


请注意,字符串n和p的输出都正确。换句话说,点击0将检索“name”的字符串在相应的列表项中。只有复选框不正常。有什么想法吗?

我没有尝试,但我认为这应该有效:在
onItemClick
方法中,而不是使用
view
对象来查找
复选框,尝试使用
ListView.getChildAt(位置)

我遇到了你的问题,我的解决方案是删除与列表视图的多项选择相关的所有内容,例如android:choice\u MODE\u multiple,android:choiceMode,…。试试看!

应该归咎于
列表视图
,因为当你滚动自定义
列表视图时,你应该覆盖<代码>获取视图(…)
的适配器。API文档称该视图已被回收。因此,应保存上一个视图的状态。例如,是否选中了
复选框
。如果恢复状态,
列表视图
将按预期显示。

Hmmmm…onItemClick方法的其余部分是什么?适配器存储了什么?很好你知道,我搜索了几天,显然没有做得很好,我遇到了一个有着非常相似问题的人:我现在正试图遵循他们的解决方案。我不知道他们使用“EventDbAdapter”类的原因是什么。