同一布局中的多个RecyclerViews:针对所有recyclerViews触发一个侦听器

时间:2016-04-13 07:14:25

标签: java android

我在同一布局中有两个recyclerViews(比如说A和B),它们有一个适配器,对于recyclerViews来说都是这样的:

public class ChapterListAdapter extends RecyclerView.Adapter<ChapterListAdapter.ChapterListViewHolder>{

private final ArrayList<ChapterObj> mChapterListObj;
private final Context mContext;

public ChapterListAdapter(ArrayList<ChapterObj> chapterObj, Context c) {
    mChapterListObj = chapterObj;
    mContext = c;
}

@Override
public ChapterListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.chapter_list_item, parent, false);
    ChapterListViewHolder vh = new ChapterListViewHolder(v);
    return vh;
}

@Override
public void onBindViewHolder(ChapterListViewHolder holder, int position) {
    holder.chapterNumber.setText(mChapterListObj.get(position).getChapterNumber());
}

@Override
public int getItemCount() {
    return mChapterListObj.size();
}

public class ChapterListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnTouchListener {
    private TextView chapterNumber;

    public ChapterListViewHolder(View itemView) {
        super(itemView);
        chapterNumber = (TextView) itemView.findViewById(R.id.chapter_number);
        itemView.setOnClickListener(this);
        itemView.setOnTouchListener(this);
    }

    @Override
    public void onClick(View v) {
        Log.d("hello", "hello");
        }
    }

}
}

A和B都有点击监听器。独立,两者都很好。但是当两者都处于相同的布局时,每当我点击“A”项时,“B”的点击监听器就会被触发。

如果您需要查看更多代码,请告诉我您要查看哪个文件,我也会添加他们的代码。

编辑:我一起使用它们的xml布局文件如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".VerseActivity">

<android.support.v7.widget.RecyclerView
    android:id="@+id/chapter_list_menu"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
</android.support.v7.widget.RecyclerView>


<android.support.v7.widget.RecyclerView
    android:id="@+id/verse_list_menu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentTop="true"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
</android.support.v7.widget.RecyclerView>
</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

你可以使用Sectioned recycler视图做同样的事情。甚至可以加载更快,并让您显示尽可能多的切片。 (在同一页面或视图中删除2-3个recyclerview的障碍)

如果您想创建自己的,可以查看 - https://gist.github.com/gabrielemariotti/4c189fb1124df4556058

或者您也可以找到许多库。