当前位置:  开发笔记 > Android > 正文

获取在RecycleView中选择的ContextMenu的位置

如何解决《获取在RecycleView中选择的ContextMenu的位置》经验,为你挑选了1个好方法。

通常情况下ListViews,当我想获得用户点击上下文菜单的位置时,我会这样做.

public boolean onContextItemSelected(android.view.MenuItem item) {

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    position = info.position;

但是,自从我切换到a后RecycleView,我现在在这里得到一个空指针.

上面的代码是在我的主要Activity(Fragment),而onCreateContextMenu()在做adapter,按新的方式.

ItemView.setOnCreateContextMenuListener(this); 也在适配器(特别是构造函数)中完成.



1> Konstantin L..:

有3种选择:

    你可以通过getAdapterPosition()而不是MenuItem订单

    private class ChipViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
        public ChipViewHolder(View itemView) {
            super(itemView);
            itemView.setOnCreateContextMenuListener(this);
        }
    
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            menu.setHeaderTitle("Select The Action");
            menu.add(0, ACTION_1_ID, getAdapterPosition(), "action 1");
            menu.add(0, ACTION_2_ID, getAdapterPosition(), "action 2");
        }
    }
    

    然后,在Activity听取onContextItemSelected()和检索位置getOrder()

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        int clickedItemPosition = item.getOrder();
        // do something!
        return super.onContextItemSelected(item);
    }
    

    使用RecyclerView的定制实现像Teovald/ContextMenuRecyclerView 一个

    设置MenuItemclickListener(请参阅/sf/ask/17360801/)并在那里处理它.

是的,这是非常不方便的API.你可以选择你最喜欢的那个.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有