我在MainActivity 3 RecyclerViews中。
其中一个是底部表单,它是主要表单(默认情况下,底部表单是Open To Display this),这是其 适配器的onbind方法 做了一个 onClickListener ,以便当用户单击其中的一个项目时我想要
我想回到主要活动类别,以设置要开始滚动的方法,是要关闭底部工作表并为下一个回收视图设置数据(当底页已关闭)
...此处的问题是如何从onBind方法的Listener启动此方法,并从此viewHolder中为其指定一个参数作为其名称和某些属性
如果有不清楚的地方,请告诉我
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) {
viewHolder.categoryImage.setImageResource(mRowOfCategories.get(position).getCategoryImage());
viewHolder.categoryName.setText(mRowOfCategories.get(position).getCategoryName());
viewHolder.mCardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
答案 0 :(得分:0)
您可以轻松地做到这一点。
定义自定义界面
public Interface CustomEventListener
{
public void MyEventListener(String message); //you can change parameters
}
在您的适配器类中
public Adapter ......... {
private CustomEventListener listener;
public void setListener(CustomEventListener listener)
{
this.listener = listener;
}
//Your onBind
Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) {
viewHolder.categoryImage.setImageResource(mRowOfCategories.get(position).getCategoryImage());
viewHolder.categoryName.setText(mRowOfCategories.get(position).getCategoryName());
viewHolder.mCardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null)
listener.MyEventListener("Message");
}
});
}
}
在创建适配器的活动中添加此代码
public void InitAdapter()
{
yourAdapter = new Adapter(); // bloa bla bla
yourAdapter.setListener(new CustomEventListener() {
public void MyEventListener(String message)
{
// then do what you want
}
}
}
答案 1 :(得分:0)
您需要使用监听器来处理适配器中的单击,如下所示:
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
然后通过以下方式调用侦听器:
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) {
...
viewHolder.mCardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// call the listener.
mListener.onItemClick(v, viewHolder.getAdapterPosition());
}
});
}
然后,当您使用适配器时,将监听器设置如下:
adapter.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(View view, int position) {
// do something with the view and position.
}
});
答案 2 :(得分:0)
最简单:
您在“活动”中声明要调用的方法。它必须是公开的:
public void method(){}
然后,在适配器的构造函数中,将对Activity的引用作为参数传递:
public MyAdapter(Activity activity){}
而且,在onBindViewHolder中:
MyActivity mActivity=(MyActivity)activity;
mActivity.method();
答案 3 :(得分:0)
您希望自己的回收视图相互了解。您将需要一个类(也许是MainActivity),该类将保留选定的值,并在请求之间在recycleview之间将其清除。然后,您将需要该值来传播下一个recycleview。如果您想提高效率,则可以使用一个recycleview并在选择之间交换数据,并对其进行动画处理,以便看起来就像创建了一个新的recycleview。