- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
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/
我的 Android 应用程序有问题。我正在尝试创建一个 ListView ,每行包含一个 TextView 和一个选中的 TextView 。我已经完成了布局和适配器,它正确显示了所有项目,但我遇到
我有一个附加到数组适配器的简单 ListView 。我的列表是多选复选框的列表。 开始时,我只是将 android CheckedTextView 用于我的列表 TextView : public s
目前我正在为我的 ListView 使用 CheckedTextView。我只想在单击 CheckBox 而不是相应的文本时激活复选框。如何在CheckedTextView中实现这样的功能? 编辑:
我有以下 xml 代码: 似乎 textview 反射(reflect)了 10 dp 的填充,但右侧的复选框却没有。 TextView 和复选框彼此不对齐。任何人都知道为什么复选框不符合 10 dp
我想在我的几个 checkedtextview 中自定义复选标记。我想使用一个“简单”的解决方案,所以我这样做了: if(serviceChecked.isChecked()){ se
如何在 android 中动态创建 CheckedTextView [而不创建新的实现]? 似乎 CheckedTextView 是抽象的 ...(这根本没有任何意义)因为我不断收到编译时错误:“无法
CheckedTextView 中的文本无法居中,当我制作 android:gravity="center" 最佳答案 试试 android:layout_centerHorizontal="t
我有一个用 CheckedTextViews 动态填充的 ListView 。 ListView 设置为多选模式。我正在使用 OnItemClickListener 来响应对我的 ListView 的
我想要一个多选(选中) ListView 。当我选择一个项目时,绿色复选标记必须出现。为此,我使用了 CheckedTextViews。ListView 从数据库中获取数据。为此,我使用了 Simpl
我实现的布局如下图所示: 我使用的代码是: 这就是我想要的,如下图: 分享一些自定义它的想法,但不使用自定义线性或任何其他布局。我想要一个自定义 View 或 checkedTextVie
给定 CheckedTextView 的 checkMark 的这个 XML 属性: android:checkMark="?android:attr/listChoiceIndicatorMulti
最初我想要一个复选标记,文本放置在复选标记的左侧。在这个网站上搜索后,我发现最好的解决方法是 android:CheckedTextView?但是,我发现用户无法手动更改复选标记。是设计的吗? 最佳
这是我设置已检查 TextView 的方法。怎么没有出现复选框? 我也添加了这个,但没有效果: listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
我有一个带有复选框的 ListView,单击时需要进行切换。由于某种原因,我让它在较旧的 Android 操作系统上运行,但现在在最新版本中无法运行。 这是我的 XML 文件: 以及相关源代码:
我在 AlertDialog 上显示了一个自定义列表。我希望当我单击一个项目时,CheckedTextView 被设置为选中。我试了几个小时,但没有 setChecked()似乎不起作用... 谁能帮
我的布局有问题。 CheckedTextView 中的复选框始终位于 TextView 的右侧。我怎样才能将它对齐到列表的右边缘? 感谢您以后的回答。 这是我的布局: 最佳答案 将复选框的
好的,所以这个网站上已经解决了很多问题,但是我不相信我的代码使用的确切问题。我正在用完全工作的 CheckedTextViews 填充 listView。但是,当我单击某个项目时,它会被选中,但当我上
我正在尝试实现一个非常简单的“待办事项”列表。我选择使用 CheckedTextView 的 ListView(id 为 checked_text),ListView 当然使用 CHOICE_MODE
Android version: 3.1 API version: Android 2.2 Device: Motorola MX604 我动态创建了 CheckedTextView 项目的多选 Li
我有一个 ListView,其中每一行都包含一个 CheckedTextView。我正在使用自定义 checkMark 属性,它使用可绘制对象: 可绘制的 checkbox_selector 按预期
我是一名优秀的程序员,十分优秀!