gpt4 book ai didi

android - choiceMode 是否与 ExpandableListView 兼容?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:22 25 4
gpt4 key购买 nike

是否可以在 ExpandableListView 上使用 android:choiceMode="multipleChoice"setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) 制作多选列表>?我可以在普通 ListView 上使用 CheckBoxes 执行此操作,但它似乎不适用于 ExpandableListView。在后者中,单击列表项(父项或子项)不会像在前者中那样影响复选框。

我注意到可以准确地单击复选框以使其切换,但这是一个非常小的目标。

这是一个relevant unanswered forum post .

最佳答案

默认情况下没有。查看源码可以看到如下内容:

512     @Override
513 public boolean performItemClick(View v, int position, long id) {
514 // Ignore clicks in header/footers
515 if (isHeaderOrFooterPosition(position)) {
516 // Clicked on a header/footer, so ignore pass it on to super
517 return super.performItemClick(v, position, id);
518 }
519
520 // Internally handle the item click
521 final int adjustedPosition = getFlatPositionForConnector(position);
522 return handleItemClick(v, adjustedPosition, id);
523 }

533 boolean handleItemClick(View v, int position, long id) {
534 final PositionMetadata posMetadata = mConnector.getUnflattenedPos(position);
535
536 id = getChildOrGroupId(posMetadata.position);
537
538 boolean returnValue;
539 if (posMetadata.position.type == ExpandableListPosition.GROUP) {
540 /* It's a group, so handle collapsing/expanding */
...
579 } else {
580 /* It's a child, so pass on event */
581 if (mOnChildClickListener != null) {
582 playSoundEffect(SoundEffectConstants.CLICK);
583 return mOnChildClickListener.onChildClick(this, v, posMetadata.position.groupPos,
584 posMetadata.position.childPos, id);
585 }
586
587 returnValue = false;
588 }
589
590 posMetadata.recycle();
591
592 return returnValue;
593 }

来源: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/widget/ExpandableListView.java#ExpandableListView.handleItemClick%28android.view.View%2Cint%2Clong%29

这里的问题是如果行既不是页眉也不是页脚,父类(super class)(android.widget.AbsListView)的方法performItemClick将不会被调用,这是考虑选择模式的方法: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/widget/AbsListView.java#AbsListView.performItemClick%28android.view.View%2Cint%2Clong%29

因此,唯一的解决方案是自己在 onChildItemClickListener 中实现选择逻辑。以下是多项选择的示例代码:

https://github.com/jiahaoliuliu/ExpandableListViewMultipleChoice

关于android - choiceMode 是否与 ExpandableListView 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815654/

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