【发布时间】:2014-01-24 23:53:33
【问题描述】:
我正在尝试在我的自定义 ExpandableListView 中实现多项选择,这是 Java 代码和组布局:
Java
mExpandable.setChoiceMode(ExpandableListView.CHOICE_MODE_MULTIPLE_MODAL);
mExpandable.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode actionMode, int position, long id, boolean checked) {
if(DEBUG) Log.i("mFragmentList","onItemCheckedStateChanged()");
if(mExpandable.getCheckedItemCount() == 0)
actionMode.setSubtitle("Check some items!");
else if(mExpandable.getCheckedItemCount() == 1)
actionMode.setSubtitle("1 item selected");
else
actionMode.setSubtitle(mExpandable.getCheckedItemCount() + " items selected");
}
@Override
public boolean onCreateActionMode(ActionMode actionMode, android.view.Menu menu) {
actionMode.setTitle("Select Items");
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, android.view.Menu menu) {
return true;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
return true;
}
@Override
public void onDestroyActionMode(ActionMode actionMode) {
}
});
group_row.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/activated">
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:scaleType="center"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
android:layout_gravity="left"
android:src="@drawable/ball" />
<TextView
android:id="@+id/tvGroupName"
android:paddingLeft="35dp"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFF0000"
android:textSize="17sp" />
</RelativeLayout>
当我长按某个项目时,该项目被选中并创建了 ActionMode,但是如果我想选择另一个项目,则该项目将被展开并且不再调用 onItemCheckedStateChanged(),因此我不能选择多个项目.我试图将CHOICE_MODE_MULTIPLE_MODAL 放入 XML 中,但我什至无法选择一项。我错过了什么?截图如下:
【问题讨论】:
-
Andres,首先,非常感谢源代码。我尝试使用您在此链接中发布的 MultiChoiceMode 导入源代码:Eclipse 中的github.com/dragondgold/AnimatedExpandableListView,但它不起作用。我知道您是在 Android Studio 中完成的。我怎样才能让它在 Eclipse 中工作?谢谢
-
我认为你应该从源代码创建一个项目,或者你可以创建一个项目并复制。 java文件
标签: android expandablelistview