我有一个POJO
课程。它包含一些字符串,我想将RecyclerView
的值传递给Activity
。我试了一下然后失败了。我该怎么做?
模型
public class DetailModel {
String title;
public DetailModel() {
}
public DetailModel(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
适配器,onClick
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
detailModel=new DetailModel();
detailModels= new ArrayList<>();
detailModel.setTitle(holder.headerText.getText().toString());
Intent detailIntent = new Intent(context.getApplicationContext(), DetailActivity.class);
context.startActivity(detailIntent);
}
});
另一项活动
DetailModel detailModel=new DetailModel();
detailBody.setText(detailModel.getTitle());
答案 0 :(得分:2)
回收者视图本身不包含任何数据。这是适配器的工作。 recyclerview'的工作是显示该数据并拦截触摸事件。因此,在您的点击监听器上获取数据(POJO对象)并将其传递给您的活动。
答案 1 :(得分:2)
有几种方法可以做到,但我会向您展示最简单的方法:
在onBindViewHolder
:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder,final int position) {
final MyView myHolder = (MyView) holder;
myHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
detailModel.setTitle(holder.headerText.getText().toString());
Intent detailIntent = new Intent(context, DetailActivity.class);
//To pass your class:
intent.putExtra("mypojo", details.get(position));
context.startActivity(detailIntent);
}
});
}
通过这种方式,您必须在Serializable
课程中实施POJO
:
public class DetailModel implements Serializable{
String title;
public DetailModel() {
}
public DetailModel(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
在第二个Activity
中使用此代码获取类:
getIntent().getExtras().getSerializable("mypojo");
//also you can cast extra
DetailModel detailmodel=(Detailmodel) getIntent().getExtras().getSerializable("mypojo");
//if you implemented Parcelable
DetailModel detailmodel=(Detailmodel) getIntent().getExtras().getParcelable("mypojo");
这是第一种方式,另一种更快的方式是使用Parcelable
,请查看此答案,但您必须在Parcelable
中付出一些努力:how-to-send-an-object-from-one-android-activity-to-another-using-intent
我建议您使用Parcelable
也许您需要一些时间来学习它,但是您可以在较大的课程中感受速度差异。
此外,如果您的POJO中有少量字符串,请尝试使用intent extras而不是像这样发送类:
intent.putExtra("model_name",pojo.getName());
//then get
getIntent().getExtras().getString("model_name");