如何对 RecyclerView 中的项目执行编程单击?
How to perform programmatic click on a item in a RecyclerView?
您好,我有一个使用 Recycler 视图来显示一堆项目的应用程序。现在我想在列表上运行 android 测试,但我不知道如何设置对给定项目的程序化点击。谁能告诉我如何实现这一目标?
您必须从头开始实施。 RecyclerView 缺少 ListView 默认提供的一些很棒的功能。鉴于此,在适配器中,您必须在 Fragment/Activity 和 RecyclerView 之间为 Observer 声明一个接口。
附加此点击事件的正确方法是onBindViewHolder
。然后在适配器中保留对 CustomListener
或 View.OnClickListener.
的引用
这是一个关于如何执行此操作的简单示例:
@Override
public void onBindViewHolder(SearchListAdapter.ViewHolder holder, final int position) {
//Item clicked
holder.mParent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Select or deselect
mListener.notify(holder, position);
}
});
}
ViewHolder 应该是这样的:
public class ViewHolder extends RecyclerView.ViewHolder {
private View mParent;
public ViewHolder(View itemView) {
super(itemView);
mParent = itemView;
}
}
其中 mParent
是当前行视图。
您好,我有一个使用 Recycler 视图来显示一堆项目的应用程序。现在我想在列表上运行 android 测试,但我不知道如何设置对给定项目的程序化点击。谁能告诉我如何实现这一目标?
您必须从头开始实施。 RecyclerView 缺少 ListView 默认提供的一些很棒的功能。鉴于此,在适配器中,您必须在 Fragment/Activity 和 RecyclerView 之间为 Observer 声明一个接口。
附加此点击事件的正确方法是onBindViewHolder
。然后在适配器中保留对 CustomListener
或 View.OnClickListener.
这是一个关于如何执行此操作的简单示例:
@Override
public void onBindViewHolder(SearchListAdapter.ViewHolder holder, final int position) {
//Item clicked
holder.mParent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Select or deselect
mListener.notify(holder, position);
}
});
}
ViewHolder 应该是这样的:
public class ViewHolder extends RecyclerView.ViewHolder {
private View mParent;
public ViewHolder(View itemView) {
super(itemView);
mParent = itemView;
}
}
其中 mParent
是当前行视图。