我想在RecyclerView中实现一个长按压的CardView
布局:
<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"
/>我试过这个:
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。
我遗漏了什么?
发布于 2016-03-18 07:34:23
您可以创建接口,您应该在其中实现onLongClicked(int position)方法。并使用它。按照以下步骤创建onLongClickListener:
创建您的接口:
public interface IRecyclerViewClickListener {
void onLongClicked(int position);
}在您的活动/片段中创建侦听器对象,并将此侦听器对象传递给创建适配器方法中的适配器。示例:
// ... some code ...
adapter = new MoviesListAdapter(getActivity(), list, listener);
rvDialogs.setAdapter(adapter);
// ... code ...在您自己的ViewHolder构造函数的适配器中,在itemView上设置长侦听器:
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后:
listener = new IRecyclerViewClickListener() {
@Override
public void onLongClicked(int position) {
Toast.makeText(getActivity(), String.valueOf(position), Toast.LENGTH_SHORT).show();
}
};希望能对你有所帮助!祝你好运,并为我糟糕的英语感到抱歉;)
https://stackoverflow.com/questions/29456469
复制相似问题