gpt4 book ai didi

java - 如何获得 setOnCheckedChangeListener(ListView 复选框工作)

转载 作者:行者123 更新时间:2023-11-30 04:32:42 25 4
gpt4 key购买 nike

我标记了另一个要删除的线程,因为主要问题被编辑了太多次,以至于变得困惑。

所以问题是:我想用复选框填充 ListView,并且因为我想自定义我的 ListView,所以我没有使用 simple_multiple_choice_mode,我将我的布局放在 list_item.xml 上:(对于每一行)

      <CheckBox>
xmlns:android="http://schemas.android.com/apk/res/android" android:paddingLeft="8mm"
android:layout_width="fill_parent"
android:layout_height="wrap_removed" android:id="@+id/nomeAPP" style="?listItem"&gt;
</<CheckBox>

我的 ListView 在 lista.xml 上

    <ListView android:id="@android:id/list" 
android:layout_width="fill_parent" android:layout_height="wrap_content"
style="?whiteBackground">

我的适配器:

      list=getListView();
this.setListAdapter(new ArrayAdapter&lt;String&gt;(this,
R.layout.list_item, aux))

所以我正在尝试为复选框创建一个 setOnCheckedChangeListener,这样我就可以将选定的项目存储在一个数组中。

所以我做了这个监听器:

     CheckBox cb = (CheckBox) findViewById(R.id.CheckBox01);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
if (buttonView.isChecked()) {
Toast.makeText(getBaseContext(), &quot;Checked&quot;,
Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getBaseContext(), &quot;UnChecked&quot;,
Toast.LENGTH_SHORT).show();
}

}
});

问题是:我得到 NULL 异常。 CURIOUS 的事情是:如果我“切换”我的布局为一个简单的

    <ScrollView android:id="@+id/widget54" android:layout_width="fill_parent" 
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<CheckBox android:text="Checkbox" android:id="@+id/CheckBox01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
</LinearLayout>

</ScrollView>

忘掉我的 ListView(和我的适配器),它可以工作!那么,我的布局有什么问题吗?

我创建了一个新的小项目只是为了让你们看看具体情况。可用HERE现在不起作用,但如果您取消注释适配器,将 ListActivity 更改为 Activity 并更改 setContentView,它将起作用(选中/未选中 toast 文本)。

我发现的另一个奇怪的事情是 ListActivity 永远不会工作......想知道它是否相关......

最佳答案

好的,我想我明白了你的问题,

CheckBox cb = (CheckBox) findViewById(R.id.CheckBox01);

这适用于第二个布局,因为您可能已经使用 setcontentview() 为 Activity 设置了 View 。

所以,您的列表 Activity 中的问题是,上面提到的行不知道它必须寻找哪个布局才能找到 id,

R.id.CheckBox01

您必须访问正在扩充 ListView 的布局 View ,我们称它为inflatedView,然后您可以像这样访问复选框。

CheckBox cb = (CheckBox) inflatedView.findViewById(R.id.CheckBox01);

如果不设置内容 View ,则必须告诉函数 findViewById(),它必须在哪里查找 View 。如果您发布 NPE 日志,我会确认这一点。

HTH.

关于java - 如何获得 setOnCheckedChangeListener(ListView 复选框工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7417105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com