【发布时间】:2015-06-12 21:30:51
【问题描述】:
我基本上想要做的是使显示在回收器视图中的对象可点击到某个 TextView id,因为我正在制作一个程序,在列表中显示专辑封面及其旁边的标题。我需要能够单击回收器视图制作的每个框,并在单击时弹出一个带有其他信息(作者、发布日期、热门歌曲等)的 TextView,然后单击后退按钮(如果可能)返回专辑列表。我已经看了好几个小时了,不知道如何让 OnclickListener 为它工作。如果你知道如何或有任何建议,我很高兴听到他们。谢谢!
package com.albumlist.albumlist;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private AlbumData[] itemsData;
public MyAdapter(AlbumData[] itemsData){
this.itemsData = itemsData;
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView txtViewTitle;
private ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
itemLayoutView.setOnClickListener(this);
txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.album_title);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.album_icon);
}
@Override
public void onClick(View v) {
}
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
View itemLayoutView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.data_layout, null);
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.txtViewTitle.setText(itemsData[position].getTitle());
viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl());
}
@Override
public int getItemCount() {
return itemsData.length;
}
}
【问题讨论】:
-
在视图持有者内设置点击监听器。定义一个监听器接口并首先将其传递给
Adapter,然后再传递给onCreateViewHolder中的ViewHolder。处理点击实际上与ListView完全相同。即使在RecyclerView之前,您也不应该使用ListView的OnItemClickListener回调,这就是RecyclerView不再拥有它们的原因。
标签: java android android-studio onclicklistener android-recyclerview