【发布时间】:2016-10-07 02:40:45
【问题描述】:
我已经在 android 中使用 RecycleVeiw 创建了 CardView,现在我想为 recyleview 中的每一项 cardivew 添加意图,请指导我: 我的要求的屏幕截图: 我的适配器类代码在这里给出:
public class MapAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
private List<MapSetData> venues;
public Context context;
public MapAdapter(List<MapSetData> venues, Context context) {
this.venues = venues;
this.context = context;
}
@Override
public VenuesViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.map_item, viewGroup, false);
VenuesViewHolder pvh = new VenuesViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
VenuesViewHolder holder = (VenuesViewHolder) viewHolder; holder.venues_picture.setImageResource(venues.get(position).venue_picture);
holder.card_title_txt.setText(venues.get(position).card_title_txt);
holder.location_qs.setText(venues.get(position).location_qs);
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position) == 0) {
return TYPE_HEADER;
} else if (isPositionHeader(position) == 1) {
return TYPE_ITEM;
} else {
return 0;
}
}
private int isPositionHeader(int position) {
return position;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public int getItemCount() {
return venues.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View v) {
super(v);
}
}
public class VenuesViewHolder extends ViewHolder implements View.OnClickListener {
ImageView venues_picture;
TextView card_title_txt;
TextView location_qs;
CardView cv;
public Context context;
public VenuesViewHolder(View v) {
super(v);
v.setOnClickListener(this);
context = v.getContext();
cv = (CardView) itemView.findViewById(R.id.cv);
venues_picture = (ImageView) itemView.findViewById(R.id.match_picture);
card_title_txt = (TextView) itemView.findViewById(R.id.card_title_txt);
location_qs = (TextView) itemView.findViewById(R.id.location_qs);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context, MapDetails.class);
context.startActivity(intent);
}
}
}
【问题讨论】:
-
几乎完成了。
setOnClickListener(this)用于卡片视图的每个项目。例如:venues_picture.setOnClickListener(this)和方法onClick(View v)检查 idif(v.getId()==R.id.match_picture){//do something}。 -
不是cardview的每一项,而是recycleview中的每一项,比如整个cardview触摸监听器,我希望得到我的问题
-
如果是整个卡片视图,设置
cv.setOnClickListener(this)。您可以使用 getAdapterPosition() 检查不同卡片视图的位置。 -
是的,我想要这个,你能给我一些代码来帮助我吗?
-
这很容易。你可以看到一些例子here。
标签: android listview android-fragments android-studio android-intent