gpt4 book ai didi

Android:CheckedTextView isChecked 返回不正确的值

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

Android version: 3.1
API version: Android 2.2
Device: Motorola MX604

我动态创建了 CheckedTextView 项目的多选 ListView,并将 OnItemClickListener 附加到 ListView。在监听器的 onItemClick 方法中,我调用 CheckedTextView 的 isChecked 方法来确定关联的复选框是选中还是未选中。很简单。

问题:当我选择以前未选择的项目时,isChecked 方法返回 false。当我选择以前选择的项目时,该方法返回 true。复选框图标本身可以正确选中和取消选中。

这是 CheckedTextView 的布局:

    <CheckedTextView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:drawableLeft="?android:attr/listChoiceIndicatorMultiple"
android:paddingLeft="6dip" android:paddingRight="6dip"
/>

这就是我创建 ListView 的方式:

    private void createSortedChannelList() {

emptyViewContainer();

ListView sortedListView = new ListView(this);
sortedListView.setId(CHANNEL_LISTVIEW_ID);
sortedListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
sortedListView.setItemsCanFocus(false);

sortedListView.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {

CheckedTextView selectedItem = (CheckedTextView) view;
boolean isChecked = selectedItem.isChecked();
Log.e(mLogTag,"item clicked position = " + position + " isChecked = " + isChecked);

}

});

ArrayAdapter<Channel> listAdapter =
new ArrayAdapter<Channel>(this,R.layout.favorite_channel_list_select_channel_row,mAllChannels);
sortedListView.setAdapter(listAdapter);

for(int channelIndex = 0;channelIndex < mChannelIds.length;channelIndex++){
if(mSelectedChannelIds.contains(mChannelIds[channelIndex]))
sortedListView.setItemChecked(channelIndex, true);
}

addViewToViewContainer(sortedListView);

}

这是当我选择之前未选择的项目时产生的日志输出:

09-23 09:08:59.650: item clicked position = 19 isChecked = false

当我选择之前选择的项目时

09-23 09:10:20.800: item clicked position = 18 isChecked = true

我进行了广泛的搜索,但只能找到一份类似行为的其他报告。这使我相信问题可能出在我的代码上,而不是 android 类:p 我还查看了许多以类似方式设置的示例。谁能发现问题?

谢谢

PS 这是我在任何论坛上的第一篇文章,所以如果我遗漏了对这篇文章的读者有帮助的内容,请告诉我。

最佳答案

我相信代码的行为符合它应有的方式。选择先前未选择的方法将在更改列表中项目的选中状态之前调用点击监听器。换句话说,在 onClick() 方法完成之前,isChecked() 不会为先前未选择的项目返回 true。

关于Android:CheckedTextView isChecked 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531334/

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