- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个多选对话框,在单击按钮时弹出。下图显示了它的外观。
问题来了。当我点击 select all
时,我使用 listView.setItemChecked(position, true)
以编程方式检查所有项目。那部分有效。但在那之后,当用户取消选中列表中的特定项目时,我想取消选中 全选
。
下面是我的代码,我不知道为什么它不起作用。
private CharSequence[] itemList = {"select all", "one", "two", "three", "four", "five", "six"};
private boolean[] itemBooleanList = new boolean[]{false, false, false, false, false, false, false};
final AlertDialog.Builder myDialog = new AlertDialog.Builder(this);
myDialog.setTitle("Select type(s)");
myDialog.setMultiChoiceItems(itemList, itemBooleanList, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
final ListView listView = ((AlertDialog)dialog).getListView();
if(indexSelected == 0){ // if "select all" is clicked - check/uncheck all items
for(int i=0; i<itemList.length; i++){
listView.setItemChecked(i, isChecked);
itemBooleanList[i] = isChecked;
}
}else{
itemBooleanList[indexSelected] = isChecked;
}
// now I check if all item in boolean[] are true or false, if one of the item is false, it returns false and `select all` can be unchecked
final boolean areAllTrue = areBooleanAllTrue(itemBooleanList);
listView.setItemChecked(0, areAllTrue);
System.out.println(Arrays.toString(itemBooleanList));
}
}).show();
PS:当我打印 itemBooleanList
时,如果用户取消选中某个项目,我确实看到该索引处的 boolean 值设置为 false,这意味着逻辑是正确的,它只是 setItemChecked
没有完成它的工作。
如果您希望我上传更多代码或屏幕截图,请告诉我。
最佳答案
我希望下面的代码能解决问题,
final ListView listView = ((AlertDialog)dialog).getListView();
if(indexSelected == 0){ // if "select all" is clicked - check/uncheck all items
for(int i=0; i<itemList.length; i++){
listView.setItemChecked(i, isChecked);
itemBooleanList[i] = isChecked;
}
}else{
itemBooleanList[indexSelected] = isChecked;
if(!isChecked) {
itemBooleanList[0] = false;
listView.setItemChecked(0, false);
}else{
//check whether all the items are checked otherthan 'select all'
//if true then
//itemBooleanList[0] = true;
//listView.setItemChecked(0, true);
}
}
关于java - listView setItemChecked 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638839/
我想像第一张图片(圆形 fragment 示例)一样保留列表项选择,因此当选择列表项时,它应该保持标记为“选定”。我拥有的是我在网上找到的两个不同的项目。第一张图片是我想要实现的行为。在第二张图片(
如果对话框打开,我试图选中一个复选框,但 setItemChecked 似乎不起作用。这是我的代码。我已经检查了其他答案,但没有帮助。有人知道我的代码是否有问题吗? 谢谢。 alert
我想知道如何将一些java代码转换为swift。我在网上查了一下,但没有发现任何有用的东西。我找到了 j2objc 但我不知道如何让它工作。我只需要翻译一行代码。
我有一个多选对话框,在单击按钮时弹出。下图显示了它的外观。 问题来了。当我点击 select all 时,我使用 listView.setItemChecked(position, true) 以编程
我正在使用带有 MULTIPLE_CHOICE 的 ListView 并使用 setItemChecked() 方法取回所选项目。 它工作正常,因为我能够看到之前检查过的项目。问题是,如果我取消选中
我试图显示简单的检查列表,我需要检查一些项目。 这是我的代码 ArrayAdapter taskAdapter = new ArrayAdapter(this, android.R.layout.si
由于某些原因,setItemChecked 不起作用。有人可以帮我修好 ti 吗? String[] str = getResources().getStringArray(R.array.brush
我在使用合并游标填充的 ListView 时遇到问题。我的应用程序中有一个按钮可以选择 ListView 中的所有条目。按下按钮时调用的函数如下: private void selectAllEntr
我想在左侧(主)侧使用带有 GridView 的 Master-Detail-Flow。根据the documentation , GridView 有一个方法 setItemChecked(posi
我这里有这段代码: @Override protected void onListItemClick(ListView l, View v, int position, long id) {
如果您直接调用 AbsListView.setItemChecked(),效果很好,ActionMode 将激活并创建。 mGridView.setItemChecked(pPosition, tru
我有一个 ListView ,它被定制为显示一个图像和 2 个 TextView 。我只是想突出显示列表中的一项。 首先,我使用了 listview 的 setSelection 方法,我最终发现它不
我在处理选中的列表框时偶然发现了 SetItemChecked 和 SetItemCheckState。 SetItemChecked 采用列表索引和 True/false 来将列表项设置为选中或取消
我在 ListView 项中有一个 Edittext 和一个 CheckedTextView(布局实现了 Checkable)。当我单击 EditText 时,CursorAdapter 的 bind
这真的很奇怪。 当我为 ListView 使用标准 ArrayAdapter 时,调用 setItemChecked 工作正常 但是当使用定制的 ArrayAdapter 时它不会。 原因是什么?这是
我正在开发 Material Design 抽屉导航。我在其中创建了一个新类 RecyclerItemClickListener implements RecyclerView.OnItemTouch
我尝试通过方法为选中/选定的行设置颜色:listView.setItemChecked(i, true);但在 Android 2.2.1 上不起作用,颜色没有改变。如果我使用 state_activ
我是一名优秀的程序员,十分优秀!