【发布时间】:2016-06-11 08:22:01
【问题描述】:
我有一个 RecyclerView.ViewHolder 和 RecyclerView.Adapter,我需要在单击项目后将有关此项目的信息发送到另一个 Activity。
PlacesAdapter.java
public class PlacesAdapter extends RecyclerView.Adapter<PlacesViewHolder> {
private PlacesActivity placesActivity;
Context context;
private int position;
List<Places> places;
public PlacesAdapter(List<Places> places) {
this.places = places;}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public PlacesViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.places_view, viewGroup, false);
PlacesViewHolder pvh = new PlacesViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(PlacesViewHolder personViewHolder, int i) {
personViewHolder.name.setText(places.get(i).name);
personViewHolder.address.setText(places.get(i).address);
Picasso.with(personViewHolder.itemView.getContext())
.load(places.get(i).photo)
.into(personViewHolder.getPhoto());
}
@Override
public int getItemCount() {
return places.size();
}
}
PlacesViewHolder.java
在这一行"intent.putExtra(PlacesDetail.PLACES_NAME,);" 我如何发送姓名?
public class PlacesViewHolder extends RecyclerView.ViewHolder {
CardView cv;
public TextView name;
public TextView address;
public ImageView photo;
public PlacesViewHolder(final View itemView) {
super(itemView);
cv = (CardView)itemView.findViewById(R.id.cv);
name = (TextView)itemView.findViewById(R.id.person_name);
address = (TextView)itemView.findViewById(R.id.person_age);
photo = (ImageView)itemView.findViewById(R.id.person_photo);
itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, PlacesDetail.class);
intent.putExtra(PlacesDetail.PLACES_NAME,);
context.startActivity(intent);
}
});
}
public TextView getAddress() {
return address;
}
public TextView getName() {
return name;
}
public ImageView getPhoto() {
return photo;
}
}
【问题讨论】:
-
只需将
placeitem 作为字段放入viewholder。 -
另一种方式是从viewholder获取item位置,从places获取item
-
使用卡片视图,然后获取 cardView.setOnClickListener(new View.OnClickListener() 上的值,并通过 sharedpreference 或 intent 传递任何你想要的值
-
查看下面的答案,如果您有任何疑问或困惑,请通过评论告诉我。
标签: java android android-recyclerview onclicklistener