Android– 长期点击RecyclerView项目和ContextMenu

Android– 长期点击RecyclerView项目和ContextMenu,第1张

概述问题:当在recyclelerview中的项目上长按时,无法显示显示“删除”选项的上下文菜单预期结果:见下图我几乎就在那里,但我遗漏了一些东西,使contextMenu显示在longClick上.这是我放在viewHolder中的内容.我不知道我应该添加什么以及在onLongClick事件中显示上下文菜单的位置.我跳过

问题:当在recyclelervIEw中的项目上长按时,无法显示显示“删除”选项的上下文菜单

预期结果:见下图

我几乎就在那里,但我遗漏了一些东西,使contextMenu显示在longClick上.

这是我放在vIEwHolder中的内容.我不知道我应该添加什么以及在onLongClick事件中显示上下文菜单的位置.

我跳过了一些代码行,并保留了与我的问题相关的代码.

感谢你的帮助,

我的界面处理两种类型的点击

public interface OnItemClickListener{    voID onItemClick(int position);}public interface OnItemLongClickListener{    voID onItemLongClick(int position);}

查看者代码

public voID bindLongClick(final int position, final OnItemLongClickListener onItemLongClickListener) {        itemVIEw.setonLongClickListener(new VIEw.OnLongClickListener() {            @OverrIDe            public boolean onLongClick(VIEw vIEw) {                onItemLongClickListener.onItemLongClick(position);                return true;            }        });    }    @OverrIDe    public voID onCreateContextMenu(ContextMenu contextMenu, VIEw vIEw, ContextMenu.ContextMenuInfo contextMenuInfo){            //menuInfo is null        Log.v(LOG_TAG, "grrr");        contextMenu.setheaderTitle("Select The Action");        contextMenu.add(0, vIEw.getID(), 0, "Supprimer");//groupID, itemID, order, Title    }

适配器代码

@OverrIDe    public voID onBindVIEwHolder(CityListVIEwholder holder, int position) {        holder.cityname.setText(cityArrayList.get(position).getCityname());        holder.bindClick(position, onItemClickListener);        holder.bindLongClick(position, onItemLongClickListener);    }

然后,在活动中 – 我跳过了与我的问题无关的内容

mCitylistadapter = new Citylistadapter(mContext, cityArrayList, new Citylistadapter.OnItemClickListener() {            @OverrIDe            public voID onItemClick(int position) {                mPager.setCurrentItem(position);                mDrawerLayout.closeDrawers();            }        }, new Citylistadapter.OnItemLongClickListener() {            @OverrIDe            public voID onItemLongClick(int position) {                Log.v(LOG_TAG, "position "+position);            }        });        registerForContextMenu(mRecyclerVIEw);

解决方法:

你需要的是在里面显示带有列表的Dialog.像那样:

    itemVIEw.setonLongClickListener(new VIEw.OnLongClickListener() {        @OverrIDe        public boolean onLongClick(VIEw vIEw) {            final CharSequence[] items = {"Supprimer", "etc", "etc1"};            AlertDialog.Builder builder = new AlertDialog.Builder(mContext);            builder.setTitle("Select The Action");            builder.setItems(items, new DialogInterface.OnClickListener() {                @OverrIDe                public voID onClick(DialogInterface dialog, int item) {                }            });            builder.show();            return true;        }    });
总结

以上是内存溢出为你收集整理的Android – 长期点击RecyclerView项目和ContextMenu全部内容,希望文章能够帮你解决Android – 长期点击RecyclerView项目和ContextMenu所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1115154.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存