长按一下ListFragment

我正在处理一个ListFragment并做一个onListItemClick。 一切工作正常,但现在我想要使用一个长的项目点击(例如setOnItemLongClickListener(新的OnItemLongClickListener()为一个活动)。我怎样才能在我的片段使用这个?

谢谢!

是的,tsync发布的解决scheme适用于我。 我也遇到了同样的问题,认为这是不可能的。 我尝试了以下build议:

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; } }); 

它的工作!

根据你想要实现的内容,你可以使用给定的上下文方法:

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

 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); registerForContextMenu(this.getListView()); } 

比实现这两个方法,创build一个上下文菜单,做一个菜单项被点击时,你想要什么:

 @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); } } 

这对我有用

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