如何根据单击的recyclerview项目打开新活动?

时间:2018-06-15 13:41:34

标签: android android-recyclerview onclicklistener

如何根据您从回收站视图列表中单击的某个项目打开新活动?

例如,如果我点击列表1,那么它将转到活动1;如果我点击列表2,它将转到活动2。

现在,每次点击列表中的某个项目时,它都会转到相同的活动。

这是我的代码:

@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerAdapter<Model, ViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<Model, ViewHolder>(
                    Model.class,
                    R.layout.row,
                    ViewHolder.class,
                    mDbRef
            ) {

                @Override
                protected void populateViewHolder(ViewHolder viewHolder, Model model, int position) {
                    viewHolder.setDetails(getApplicationContext(), model.getTitle(), model.getDescription(), model.getImage());

                    viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            startActivity(new Intent(view.getContext(), Activity2.class));

2 个答案:

答案 0 :(得分:3)

在onClickListener中执行类似的操作:

public void onClick(View view) {
   int pos = getAdapterPosition());
   if (pos == 1)
      startActivity(new Intent(view.getContext(), Activity1.class));
   if (pos == 2)
      startActivity(new Intent(view.getContext(), Activity2.class));
}

答案 1 :(得分:1)

IMO,执行此操作的最佳方法是让viewholder实例提供支持它的任何数据。支持它的数据在适配器的onBindViewHolder()方法中设置。

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


    final View view = LayoutInflater.from(mContext)
                                    .inflate(R.layout.li_filter_item, parent, false);

    final MyViewHolder viewHolder = new MyViewHolder(view);


    view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (myRecyclerViewListener != null) {
                myRecyclerViewListener.onClick(viewHolder.getData);
            }
        }
    });
    return viewHolder;
}