OnItemLongClickListener() 不会导致 ListFragment 中的日志点击手势

Posted

技术标签:

【中文标题】OnItemLongClickListener() 不会导致 ListFragment 中的日志点击手势【英文标题】:OnItemLongClickListener() doesn't result in log tap gesture in 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。谢谢。

【问题讨论】:

从下面的链接中找到了最好的例子:github.com/springbyexample/spring-by-example/blob/master/… 因此任务解决了。 【参考方案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】:

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

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

    mVacationListView.setOnLongClickListener(your fragment instance);
    

    在您的片段中处理覆盖方法。

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

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

【讨论】:

你能推荐任何我可以使用的样本吗?谢谢 您好 faisalm,请查看以下链接。示例代码也可用。 vogella.com/tutorials/AndroidListView/article.html

以上是关于OnItemLongClickListener() 不会导致 ListFragment 中的日志点击手势的主要内容,如果未能解决你的问题,请参考以下文章

ListView 长按动画

为啥我不能删除一个项目?

执行长按时如何防止 OnItemClickListener 工作?

在 Android 中不会阻止拖放的不显眼的弹出窗口