您需要在此处查看本教程,以更好地了解如何实现所需的行为。
如果要处理
onClickListener您的活动中的,则需要基于带有接口的回调实现。将接口从活动传递到适配器,然后在单击某些项目时从适配器调用回调函数。
这是教程中的示例实现。
首先让我们拥有界面。
public interface onItemClickListener { void onItemClick(ContentItem item);}您需要修改适配器以将侦听器作为参数,如下所述。
private final List<ContentItem> items;private final onItemClickListener listener;public ContentAdapter(List<ContentItem> items, onItemClickListener listener) { this.items = items; this.listener = listener;}现在,在您的
onBindViewHolder方法中,设置点击监听器。
@Override public void onBindViewHolder(ViewHolder holder, int position) { holder.bind(items.get(position), listener);}public void bind(final ContentItem item, final onItemClickListener listener) { ... itemView.setonClickListener(new View.onClickListener() { @Override public void onClick(View v) { listener.onItemClick(item); } });}现在在您的计算机中设置适配器
RecyclerView。
recycler.setAdapter(new ContentAdapter(items, new ContentAdapter.onItemClickListener() { @Override public void onItemClick(ContentItem item) { Toast.makeText(getContext(), "Item Clicked", Toast.LENGTH_LONG).show(); }}));因此,整个适配器代码如下所示。
public class ContentAdapter extends RecyclerView.Adapter<ContentAdapter.ViewHolder> { public interface onItemClickListener { void onItemClick(ContentItem item); } private final List<ContentItem> items; private final onItemClickListener listener; public ContentAdapter(List<ContentItem> items, onItemClickListener listener) { this.items = items; this.listener = listener; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item, parent, false); return new ViewHolder(v); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.bind(items.get(position), listener); } @Override public int getItemCount() { return items.size(); } static class ViewHolder extends RecyclerView.ViewHolder { private TextView name; private ImageView image; public ViewHolder(View itemView) { super(itemView); name = (TextView) itemView.findViewById(R.id.name); image = (ImageView) itemView.findViewById(R.id.image); } public void bind(final ContentItem item, final onItemClickListener listener) { name.setText(item.name); Picasso.with(itemView.getContext()).load(item.imageUrl).into(image); itemView.setonClickListener(new View.onClickListener() { @Override public void onClick(View v) { listener.onItemClick(item); } }); } }}


