Long click on ListFragment

前端 未结 3 722
醉梦人生
醉梦人生 2021-02-05 01:44

I\'m working with a ListFragment and doing a onListItemClick. Everything works fine, but now I want to use a long Item Click (e.g setOnItemLongClickListener(new OnItemLongClickL

相关标签:
3条回答
  • 2021-02-05 02:13

    Depending on what you want to realize you can use the given methods for context menues:

    First register the View class which gets long pressed (inside your Fragment class):

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

    Than implement these two methods, to create a context menu and do what ever you want when a menu item is clicked:

    @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);
        }
    }
    
    0 讨论(0)
  • 2021-02-05 02:16

    This works for me

    getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
        public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
            //Get your item here with the position                   
            return true;
        }
    });
    
    0 讨论(0)
  • 2021-02-05 02:37

    Yes, the solution posted by tsync works for me. I too had ran into same problem and considered that this is not possible. I tried the above suggestion as follows:

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

    and it worked!

    0 讨论(0)
提交回复
热议问题