如何从recyclerview开始新活动?

时间:2019-02-11 16:04:20

标签: android android-intent android-recyclerview recycler-adapter

当我单击recyclerview上的项目时,我想启动新活动并将JSON数据传递给新活动。我在youtube上观看了一个视频:https://www.youtube.com/watch?v=OfsiccfUWVc&index=6&list=PLaoF-xhnnrRW_FGeacuT1VLqnRMKfpp4v,但是当我单击recyclerview上的项目后,该视频未显示如何进行新活动。从视频中,我想单击该项目,然后新的活动会将我带到有关该项目的“更多详细信息页面”。

我试图做到这一点,但是我不确定如何从新的主要活动中致电

这是我的适配器代码:

public class LonghouseAdapter extends RecyclerView.Adapter<LonghouseViewHolder> {

Context context;
List<LonghousesCategoryOne> longhousesCategoryOneList;
List<Category> categories;
private OnItemClickListener mlistener;


public LonghouseAdapter(Context context, List<LonghousesCategoryOne> longhousesCategoryOneList) {
    this.context = context;
    this.longhousesCategoryOneList = longhousesCategoryOneList;
}

@NonNull
@Override
public LonghouseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(context).inflate(R.layout.longhouse_item_layout,null);
    return new LonghouseViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull LonghouseViewHolder holder, final int position) {

    holder.txt_price.setText(new StringBuilder("").append(longhousesCategoryOneList.get(position).Price));
    holder.txt_longhouse_name.setText(new StringBuilder("").append(longhousesCategoryOneList.get(position).Name));

    Picasso.with(context)
            .load(longhousesCategoryOneList.get(position).Link)
            .into(holder.img_longhouse);

    holder.setItemClickListener(new IItemClickListener() {
        @Override
        public void onClick(View v) {

           Common.currentCategory = categories.get(position);

           context.startActivity(new Intent(context, descriptionsActivity.class));
        }
    });


}

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

这是我的观看者代码:

public class LonghouseViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

ImageView img_longhouse;
TextView txt_longhouse_name, txt_price;



public void setItemClickListener(IItemClickListener itemClickListener) {
    this.itemClickListener = itemClickListener;
}

IItemClickListener itemClickListener;


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

    img_longhouse = (ImageView) itemView.findViewById(R.id.image_longhouse);
    txt_longhouse_name = (TextView) itemView.findViewById(R.id.txt_longhouse_name);
    txt_price = (TextView) itemView.findViewById(R.id.txt_longhouse_price);

    itemView.setOnClickListener(this);


}

@Override
public void onClick(View v) {

    itemClickListener.onClick(v);
}
}

在我的descriptionActivity中,如何将其设置为xml视图?到目前为止,我已经做到了。

public class descriptionsActivity extends AppCompatActivity {

retreatSecondApi mservice;
ImageView img_longhouse;
TextView txt_longhouse_description, txt_price;
Context context;
List<LonghousesCategoryOne> longhousesCategoryOneList;

CompositeDisposable compositeDisposable = new CompositeDisposable();

@Override
protected void onCreate(Bundle savedInstanceState) {

    mservice = Common.getAPI();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_descriptions);

    img_longhouse = (ImageView)findViewById(R.id.placeImageView);
    txt_longhouse_description = (TextView)findViewById(R.id.placeDescTextView);
    txt_price = (TextView)findViewById(R.id.txt_longhouse_price);

    txt_longhouse_description.setText()

}


}

有人可以指导我吗?谢谢

2 个答案:

答案 0 :(得分:0)

@rgaraisayev在您的 onClick()监听器中建议,取消注释对 startActivity()的调用,即

holder.setItemClickListener(new IItemClickListener() {
    @Override
    public void onClick(View v) {
        Common.currentCategory = categories.get(position);
        context.startActivity(new Intent(context, descriptionsActivity.class));
    }
});

答案 1 :(得分:0)

解决了它,因此在我的所有者视图中:

  holder.setItemClickListener(new IItemClickListener() {
        @Override
        public void onClick(View v) {

            Common.longhousedesc  = longhousesCategoryOneList.get(position);



           context.startActivity(new Intent(context, descriptionsActivity.class));
        }
        });

在我的新活动中,我将数据绑定到我的xml视图中,如下所示:

txt_longhouse_description.setText(Common.longhousedesc.descriptions);