我的RecyclerView:
<android.support.v7.widget.RecyclerView
android:background="?android:selectableItemBackground"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
android:id="@+id/crash_course_item_dates"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:clickable="true"
/>
ClickListener:
holder.crashCoursesDateRecyclerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
crashCourseListener.onCrashCourseClick(crashCourse);
}
});
但是当我点击recyclerview时,它无法正常工作。我认为clicklistener可能是由recyclerview中的项目触发的。所以我尝试的是在recyclerview Items'布局中设置clickable = false并设置布局的onClickListener(null)但它不起作用。
更新
感谢您的所有答案,我应该更好地解释,我在另一个recyclerview项目中有一个recyclerview,后者的每个项目都有一个Recyclerview。我通过将recyclelerview放在框架布局中并在recyclervjew上添加另一个布局并在该布局上设置onClickListener来修复此问题。
答案 0 :(得分:1)
由于Recycler视图不支持itemClick Listener,实现一个simplelistener接口并在bindview中调用该接口并将其传递给主类。请在下面找到以下代码
public interface OnItemClickListener {
public void onItemClick(View view, int position);
}
适配器构造函数
public ContentAdapter(List<ContentItem> items, OnItemClickListener listener) {
this.items = items;
this.listener = listener;
}
在Bind View Holder中
holder.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
listener.onItemClick(item);
}
});
使用OnItemClickListener实现您的活动,并在回调中添加您需要的代码。
答案 1 :(得分:0)
您只需使用onBindViewHolder()
方法进行简单的调用,即可能是您自己的持有人类。
因此请使用holder.itemView.setOnClickListener(new setOn....){
itemView
是onCreateViewHolder
方法中充气的视图。
答案 2 :(得分:0)
根据我的理解,您需要点击完整的Recycler视图, 试试这个,
RecyclerView rv = (RecyclerView) findViewById(R.id.recycler_view);
rv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//your action
}
});
答案 3 :(得分:-3)
first of all your question is not clear to me but still what i have understood u want you perform click listener on the each item of the try this
在您的recyclerview的项目布局
中 <LinearLayout
android:id="@+id/linearlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
><TextView
android:id="@+id/linearlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Demo"
android:clickable="false"
/>
</LinearLayout>
Now in item ItemHolder class
public class Demo extends ItemHolder {
LinearLayout ll;
公开演示(查看视图){
ll=(LinearLayout)view.findViewById(R.id.linearlayout);
ll.setOnClickListener(View View){
}