首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RecyclerView onLongClickListener拒绝触发

RecyclerView onLongClickListener拒绝触发
EN

Stack Overflow用户
提问于 2015-04-05 18:45:33
回答 1查看 3.6K关注 0票数 2

我想在RecyclerView中实现一个长按压的CardView

布局:

代码语言:javascript
运行
复制
<android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:scrollbars="vertical"
        android:longClickable="true"
        android:hapticFeedbackEnabled="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

我试过这个:

代码语言:javascript
运行
复制
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(Utils.context));
mRecyclerView.setOnLongClickListener(new AdapterView.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                Toast.makeText(Utils.context,"dsfd",Toast.LENGTH_LONG).show();
                return true;
            }
        });

我也尝试在RecyclerView.ViewHolder类中实现此事件,但都不起作用。我有长按效果,但事件本身并未被触发。没有onItemLongClickListener。我还尝试了这个:RecyclerView onClick

我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-03-18 07:34:23

您可以创建接口,您应该在其中实现onLongClicked(int position)方法。并使用它。按照以下步骤创建onLongClickListener:

创建您的接口:

代码语言:javascript
运行
复制
public interface IRecyclerViewClickListener {

   void onLongClicked(int position); 
}

在您的活动/片段中创建侦听器对象,并将此侦听器对象传递给创建适配器方法中的适配器。示例:

代码语言:javascript
运行
复制
// ... some code ...
adapter = new MoviesListAdapter(getActivity(), list, listener);
rvDialogs.setAdapter(adapter);
// ... code ...

在您自己的ViewHolder构造函数的适配器中,在itemView上设置长侦听器:

代码语言:javascript
运行
复制
public class MyViewHolder extends RecyclerView.ViewHolder {

        TextView Title;
        // ...

        public MessageViewHolder(View itemView) {
            super(itemView);

            Title = (TextView) itemView.findViewById(R.id.tvDialogTitle);
            // ...

            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    listener.onLongClicked(getAdapterPosition());
                    return false;
                }
            });
        }
    }

在您的activity/fragment中设置IListener后:

代码语言:javascript
运行
复制
listener = new IRecyclerViewClickListener() {
            @Override
            public void onLongClicked(int position) {
                Toast.makeText(getActivity(), String.valueOf(position), Toast.LENGTH_SHORT).show();
            }
        };

希望能对你有所帮助!祝你好运,并为我糟糕的英语感到抱歉;)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29456469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档