Android 如何使用onClick在RecycleServiceAdapter到details活动之间传递数据
我试图将此Android 如何使用onClick在RecycleServiceAdapter到details活动之间传递数据,android,bundle,android-recyclerview,Android,Bundle,Android Recyclerview,我试图将此RecyclerAdapter之间的数据传递到DetailsActivity,即当用户单击每个项目时,获取项目位置,然后例如从recyclerView获取标题,并将其显示到MainRecyclerDetailsTextView,下面是我的尝试: public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> { private List
RecyclerAdapter
之间的数据传递到DetailsActivity,即当用户单击每个项目时,获取项目位置
,然后例如从recyclerView
获取标题,并将其显示到MainRecyclerDetails
TextView
,下面是我的尝试:
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> {
private List<FeedItem> feedItemList;
private Context mContext;
public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) {
this.feedItemList = feedItemList;
this.mContext = context;
}
@Override
public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
return new FeedListRowHolder(v);
}
@Override
public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
FeedItem feedItem = feedItemList.get(i);
Picasso.with(mContext).load(feedItem.getThumbnail())
.error(R.drawable.placeholder)
.placeholder(R.drawable.placeholder)
.into(feedListRowHolder.thumbnail);
feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
feedListRowHolder.date.setText(Html.fromHtml(feedItem.getDate()));
feedListRowHolder.tags.setText(Html.fromHtml(feedItem.getTags()));
feedListRowHolder.thumbnail.setOnClickListener(clickListener);
feedListRowHolder.title.setOnClickListener(clickListener);
feedListRowHolder.date.setOnClickListener(clickListener);
feedListRowHolder.tags.setOnClickListener(clickListener);
feedListRowHolder.thumbnail.setTag(feedListRowHolder);
feedListRowHolder.title.setTag(feedListRowHolder);
feedListRowHolder.date.setTag(feedListRowHolder);
feedListRowHolder.tags.setTag(feedListRowHolder);
}
@Override
public int getItemCount() {
return (null != feedItemList ? feedItemList.size() : 0);
}
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
FeedListRowHolder holder = (FeedListRowHolder) view.getTag();
int position = holder.getAdapterPosition();
FeedItem feedItem = feedItemList.get(position);
Toast.makeText(mContext, feedItem.getTitle(), Toast.LENGTH_SHORT).show();
Intent i = new Intent(mContext, MainRecyclerDetails.class);
String getrec = feedItem.getTitle();
Bundle bundle = new Bundle();
bundle.putString("title", getrec);
i.putExtras(bundle);
startActivity(i);
}
};
class FeedListRowHolder extends RecyclerView.ViewHolder {
protected ImageView thumbnail;
protected TextView title;
protected TextView date;
protected TextView tags;
public FeedListRowHolder(View view) {
super(view);
this.thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
this.title = (TextView) view.findViewById(R.id.title);
this.date = (TextView) view.findViewById(R.id.date);
this.tags = (TextView) view.findViewById(R.id.tagsItems);
}
}
}
但是,它不起作用
我做错了什么
干杯 您可以通过这种方式实现
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> {
private List<FeedItem> feedItemList;
private Context mContext;
public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) {
this.feedItemList = feedItemList;
this.mContext = context;
}
@Override
public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
return new FeedListRowHolder(v);
}
@Override
public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
FeedItem feedItem = feedItemList.get(i);
Picasso.with(mContext).load(feedItem.getThumbnail())
.error(R.drawable.placeholder)
.placeholder(R.drawable.placeholder)
.into(feedListRowHolder.thumbnail);
feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
feedListRowHolder.date.setText(Html.fromHtml(feedItem.getDate()));
feedListRowHolder.tags.setText(Html.fromHtml(feedItem.getTags()));
}
@Override
public int getItemCount() {
return (null != feedItemList ? feedItemList.size() : 0);
}
class FeedListRowHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected ImageView thumbnail;
protected TextView title;
protected TextView date;
protected TextView tags;
public FeedListRowHolder(View view) {
super(view);
this.thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
this.title = (TextView) view.findViewById(R.id.title);
this.date = (TextView) view.findViewById(R.id.date);
this.tags = (TextView) view.findViewById(R.id.tagsItems);
thumbnail.setOnClickListener(this);
title.setOnClickListener(this);
date.setOnClickListener(this);
tags.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
FeedItem feedItem = feedItemList.get(position);
Toast.makeText(mContext, feedItem.getTitle(), Toast.LENGTH_SHORT).show();
Intent i = new Intent(mContext, MainRecyclerDetails.class);
String getrec = feedItem.getTitle();
i.putExtra("title", getrec);
mContext.startActivity(i);
}
}
}
你的
OnClickListener
在哪里?检查是否helps@Blackbelt-这一个?:View.OnClickListener clickListener=newview.OnClickListener()
我完全错过了。会发生什么?fDetailsActivity和main recyclerdetails是同一个活动吗?@Blackbelt-不是,我只是编辑了这个问题并纠正了这个错误。nx steven,但这行仍然是startActivity(i);不行,我应该用另一种方式传递数据吗?我只需要显示该活动的每个项目的详细信息…您可以尝试在Intent对象中使用putExtra方法,请参阅我编辑的代码
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> {
private List<FeedItem> feedItemList;
private Context mContext;
public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) {
this.feedItemList = feedItemList;
this.mContext = context;
}
@Override
public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
return new FeedListRowHolder(v);
}
@Override
public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
FeedItem feedItem = feedItemList.get(i);
Picasso.with(mContext).load(feedItem.getThumbnail())
.error(R.drawable.placeholder)
.placeholder(R.drawable.placeholder)
.into(feedListRowHolder.thumbnail);
feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
feedListRowHolder.date.setText(Html.fromHtml(feedItem.getDate()));
feedListRowHolder.tags.setText(Html.fromHtml(feedItem.getTags()));
}
@Override
public int getItemCount() {
return (null != feedItemList ? feedItemList.size() : 0);
}
class FeedListRowHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected ImageView thumbnail;
protected TextView title;
protected TextView date;
protected TextView tags;
public FeedListRowHolder(View view) {
super(view);
this.thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
this.title = (TextView) view.findViewById(R.id.title);
this.date = (TextView) view.findViewById(R.id.date);
this.tags = (TextView) view.findViewById(R.id.tagsItems);
thumbnail.setOnClickListener(this);
title.setOnClickListener(this);
date.setOnClickListener(this);
tags.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
FeedItem feedItem = feedItemList.get(position);
Toast.makeText(mContext, feedItem.getTitle(), Toast.LENGTH_SHORT).show();
Intent i = new Intent(mContext, MainRecyclerDetails.class);
String getrec = feedItem.getTitle();
i.putExtra("title", getrec);
mContext.startActivity(i);
}
}
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extra = getIntent().getExtras();
String title = extra.getString("title");
}