【问题标题】:OnItemLongClickListener() doesn't result in log tap gesture in ListFragmentOnItemLongClickListener() 不会导致 ListFragment 中的日志点击手势
【发布时间】:2016-03-15 14:52:01
【问题描述】:

AdapterView.OnItemLongClickListener 结合使用的 ListFragment 中的长按手势不起作用。我正在尝试在即将到来的单击时实现 GMail 之类的长按选择和连续选择。

ListFragment 声明如下:

public class VacationListFragment extends ListFragment implements View.OnClickListener, 
    ActionMode.Callback, AdapterView.OnItemClickListener, 
    AdapterView.OnItemLongClickListener, AbsListView.MultiChoiceModeListener, {

ListFragment 使用 SimpleCursorAdapter 从 DB 中加载数据,如下所示:

mAdapter = new SimpleCursorAdapter(getActivity(), R.layout.vacationlist_row_item, null, 
                  fromColumns, toView, 0);
mVacationListView.setAdapter(mAdapter);

当前情景:

CAB 会显示提供的菜单(删除),并且该操作正在运行。截图粘贴在下面:

Screenshot here

我相信我们非常接近解决方案,我们将不胜感激。 如果我不是教学法,请随意 ping。谢谢。

【问题讨论】:

标签: android android-listfragment contextual-action-bar long-press uilongpressgesturerecogni


【解决方案1】:

示例:

textView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                /*do action */
                return false;
            }
        });

【讨论】:

    【解决方案2】:

    mVacationListView.setOnLongClickListener(this) 放入您的代码中。然后,您将能够使用以下方法处理点击:

    @Override
    public boolean onLongClick(View v) {
        return false;
    }
    

    【讨论】:

    • 当前监听器实现mSpamListView = getListView(); mSpamListView.setEmptyView(getActivity().findViewById(R.id.empty)); mSpamListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); mSpamListView.setItemsCanFocus(false); mSpamListView.setOnItemClickListener(this); mSpamListView.setOnItemLongClickListener(this); mSpamListView.setMultiChoiceModeListener(this);
    • 它不应该在监听器中,而应该在 onCreateView 或 onAttach 中
    【解决方案3】:

    我可以用下面的代码示例解决这个问题。这是 ListFragmentLoaderCallbacksMultiChoiceModeListener 结合使用的多选列表的好例子。

    https://github.com/springbyexample/spring-by-example/blob/master/android/android-client/src/main/java/ua/com/springbyexample/fragment/MainListFragment.java

    【讨论】:

      【解决方案4】:

      我认为您希望在片段中单击列表项。请尝试以下代码。

      1. 在您的适配器中添加此代码。

        mVacationListView.setOnLongClickListener(your fragment instance);
        
      2. 在您的片段中处理覆盖方法。

        @Override
        public boolean onLongClick(View v) {
            return false;
        }
        

      如果您这样做,那么您的列表项长点击侦听器将处理您的片段。

      【讨论】:

      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      相关资源
      最近更新 更多