gpt4 book ai didi

Android - 自定义 ListView 上的 setChoiceMode = 无效

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:28 25 4
gpt4 key购买 nike

我正在使用用于我的 ListView 的自定义适配器。创建ArrayList后

WifiListAdapter<WifiListItem> adapter = new WifiListAdapter<WifiListItem>(
this, R.layout.listview_item_text, listItems);

我的应用程序中有以下代码:

    ListView listView = (ListView) findViewById(android.R.id.list);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(adapter);

但是,当我尝试单击该复选框时,没有任何反应。所以我必须手动管理切换复选框状态。

    protected void onListItemClick(ListView l, View v, int position, long id) {
CheckedTextView checkBox = (CheckedTextView) v
.findViewById(R.id.text1);
if (checkBox != null) {
checkBox.toggle();

然后就可以了。 (在此之前我必须删除 setChoiceMode 方法调用)

那么可能是什么问题呢?为什么没有效果?

我的 R.layout.listview_item_text.xml

    <TextView
android:id="@+id/topText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"
android:paddingTop="7dp"
android:textColor="?android:attr/textColorPrimary"/>

<TextView
android:id="@+id/botText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="17sp"
android:paddingTop="2dp"
android:paddingBottom="7dp"
android:textColor="?android:attr/textColorTertiary"
/>

在我的适配器中,我使用以下代码扩充了复选框布局:

                convertView = mInflater.inflate(
R.layout.listview_item_checkbox, null);

CheckedTextView checkbox = ((CheckedTextView) convertView
.findViewById(R.id.text1))

listview_item_checkbox.xml

    <CheckedTextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="22sp"
android:paddingTop="7dp"
android:paddingBottom="7dp"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
/>

最佳答案

代替您的代码:

if (checkBox != null)
checkBox.toggle();

尝试这样的事情:

if (checkBox != null) checkBox.setChecked(l.getCheckedItemPositions().get(position));

如果可以 - 改进您的代码(创建 CheckableFrameLayout 作为列表项的父布局)。 ListView 保持BooleanSparseArray检查位置(你可以用方法 getCheckedItemPositions() 得到它)。在代码 ( grepcode ) 中,仅当 View 正在实现 Checkable 时,它才会自行设置 View 检查或不检查。 .如果创建 CheckableFrameLayout 并作为主父级,则您不必在适配器中处理这些情况。

关于Android - 自定义 ListView 上的 setChoiceMode = 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13968390/

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