长按 ListFragment

Posted

技术标签:

【中文标题】长按 ListFragment【英文标题】:Long click on ListFragment 【发布时间】:2011-10-07 15:18:44 【问题描述】:

我正在使用 ListFragment 并执行 onListItemClick。一切正常,但现在我想使用长的项目点击(例如 setOnItemLongClickListener(new OnItemLongClickListener() for an Activity)。如何在我的片段中使用它?

谢谢!

【问题讨论】:

我找到了方法:getListView().setOnItemLongClickListener(new OnItemLongClickListener() @Override public boolean onItemLongClick(AdapterView> paramAdapterView, View paramView, int position, long paramLong) //TODO return真的; ); 【参考方案1】:

是的,tsync 发布的解决方案对我有用。我也遇到了同样的问题,并认为这是不可能的。我尝试了上述建议如下:

public  class ProjectsFragment extends ListFragment 

@Override
public void onActivityCreated(Bundle savedState) 
    super.onActivityCreated(savedState);

    getListView().setOnItemLongClickListener(new OnItemLongClickListener() 

        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) 
            Toast.makeText(getActivity(), "On long click listener", Toast.LENGTH_LONG).show();
            return true;
        
    );

它成功了!

【讨论】:

我们返回真还是假有关系吗? @纳拉亚南 @Manny265 return false 将运行 onclick 监听器, return true 阻止此操作【参考方案2】:

根据您想要实现的内容,您可以将给定的方法用于上下文菜单:

首先注册被长按的 View 类(在你的 Fragment 类中):

@Override
public void onActivityCreated(Bundle savedInstanceState) 
    super.onActivityCreated(savedInstanceState);

    registerForContextMenu(this.getListView());

实现这两种方法,创建上下文菜单并在单击菜单项时执行您想要的操作:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
    super.onCreateContextMenu(menu, v, menuInfo);

    MenuInflater inflater = this.getActivity().getMenuInflater();
    inflater.inflate(R.menu.my_context_menu, menu);


@Override
public boolean onContextItemSelected(MenuItem item) 

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) 

        case R.id.add: // <-- your custom menu item id here
            // do something here
            return true;

        default:
            return super.onContextItemSelected(item);
    

【讨论】:

不错!只想补充一点,您不能将 registerForContextMenu 与 setOnItemLongClickListener 结合使用。对某些人来说可能很明显,但对我来说不是。另外很高兴知道可以从 info.id 中检索行 id 今天我第一次提高了每一个答案,因为这就是我要对 longclick 事件做的事情。【参考方案3】:

这对我有用

getListView().setOnItemLongClickListener(new OnItemLongClickListener() 
    public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) 
        //Get your item here with the position                   
        return true;
    
);

【讨论】:

这是更好的答案 这段代码需要进入Fragment中的onViewCreated

以上是关于长按 ListFragment的主要内容,如果未能解决你的问题,请参考以下文章

Js实现长按事件

求教:android 模拟器怎样模拟 长按 功能?

IOS Swift WkWebview如何屏蔽长按

如何只屏蔽headerView上的长按事件

c语言 键盘长按

Vue 移动端的长按与触摸事件