android - 我怎样才能有一个启动 Activity 的可选行和一个同时触发上下文菜单的复选框

标签 android android-layout android-listview

在我的应用程序中,我有一个带有适配器的自定义 ListView 。在我的 ListView 中,我添加了一个带有 focusable=false 的复选框,以确保 listItem 仍然可聚焦。在 OnCheckedChangeListener 上,我调用 list.setItemChecked 以确保它触发上下文菜单。当一行被选中(而不是复选框)时,它正在启动一个 Activity 。 (编辑行内容)

在我的 Activity 中,我有这些行来在选择项目时启动上下文菜单(带有复选框)

transactionList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
transactionList.setMultiChoiceModeListener(multiChoiceMode);

问题是 因为在显示上下文菜单时出现 CHOICE_MODE_MULTIPLE_MODAL,我无法再次单击行。当我点击行时,它只会选择或取消选择行。

我正在考虑使用 CHOICE_MODE_MULTIPLE 而不是 CHOICE_MODE_MULTIPLE_MODAL 并自己开始操作,但我不知道是否有更好的方法来做我想做的事情。

事实上,我想要的正是 Gmail 应用程序。您可以选择行以执行自定义操作(删除、共享等),但您仍然可以单击行以查看电子邮件。 (即使弹出上下文菜单)

提前致谢!

附言。英语不是我的第一语言,但我很确定你能理解我在说什么。 (对于英文错误提前表示抱歉)

编辑 添加了一些代码,但我只想了解最好的做法。我知道这段代码使用了一半的旧方法,当上下文菜单打开时你不能点击一行,而我所做的重构的一半是手动触发操作栏 http://pastebin.com/Tig0qYcN

顺便说一句,我的代码在github上

适配器:https://github.com/Dalto/PersonalBankManager/blob/master/PersonalBankManager/src/org/madduck/personalbankmanager/model/adapter/TransactionAdapter.java

Activity :https://github[DOT]com/Dalto/PersonalBankManager/blob/master/PersonalBankManager/src/org/madduck/personalbankmanager/AccountFragment.java

请注意我的 github 代码可能会更改并且可能与问题无关

最佳答案

我自己修的。我不知道这是否可行,但它确实有效。

我在用

transactionList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

代替

transactionList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

并在选中复选框时添加此代码

    if (transactionAdapter.countSelected() > 0) {
        if (actionMode == null) {
            actionMode = getActivity().startActionMode(multiChoiceMode);
        }

        NumberFormat amountFormat = NumberFormat.getCurrencyInstance();
        actionMode.setTitle(amountFormat.format(transactionAdapter.getTotalAmountSelected()));
    } else if (transactionAdapter.countSelected() == 0 && actionMode != null) {
        actionMode.finish();
    }

如果您更喜欢这里我在 github 上所做的提交:https://github.com/Dalto/PersonalBankManager/commit/b6f46f7261ae2eef1f7b6fb2d2258a0da1779211

如果有人找到更好的方法(我的意思是使用 Android API 的更简洁的方法),只需在之后发布它,它可能会对其他人有所帮助。

关于android - 我怎样才能有一个启动 Activity 的可选行和一个同时触发上下文菜单的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14488230/

相关文章:

android - 滑动布局Android

Android 'busy spinner'(进度条)不上色

android - 取消选中 Android 中的所有复选框

java - 创建 ListView 后查看持有者警告

android - 从 JSON URL 加载图像到 ListView

android - 显示带或不带年份字段的 DatePicker

java - 我想要一种方法来隐藏 EditText 中的光标

android - 堆栈 View 小部件中带有 RemoteViews 的 AsyncTask

android - ViewPager/Fragment 在底部重叠 LinearLayout

java - Android:删除 ListView 中某些列表项的分隔符