RecyclerView Adapter onBind 方法
RecyclerView Adapter onBind method
我的 MainActivity 3 RecyclerViews 中有 .
其中一个在底部 sheet 并且它是主要的(默认情况下底部 sheet 是打开显示这个),在它的 adapter 的 onbind 方法 我做了一个 onClickListener 这样我想当用户点击其中的一个项目时,
我想回到主界面 activity class 来设置启动一个 方法 它滚动的是关闭底部 Sheet并设置下一个回收视图的数据(当底部Sheet关闭时会出现)
..... 这里的问题是如何从 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) {
}
});
}
你可以轻松做到这一点。
定义自定义界面
public Interface CustomEventListener
{
public void MyEventListener(String message); //you can change parameters
}
在你的适配器中class
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");
}
});
}
}
在你的Activity创建适配器时添加这段代码
public void InitAdapter()
{
yourAdapter = new Adapter(); // bloa bla bla
yourAdapter.setListener(new CustomEventListener() {
public void MyEventListener(String message)
{
// then do what you want
}
}
}
您需要使用监听器来处理适配器中的点击,如下所示:
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.
}
});
最简单:
您在 Activity 中声明了要调用的方法。必须是 public:
public void method(){}
然后,在适配器的构造函数中,将对 Activity 的引用作为参数传递:
public MyAdapter(Activity activity){}
并且,在 onBindViewHolder 中:
MyActivity mActivity=(MyActivity)activity;
mActivity.method();
您希望您的回收视图相互了解。您将需要一个 class,也许是 MainActivity,它将保留选定的值,并根据请求在回收视图之间清除它。然后您将需要该值来传播下一个回收视图。如果您想提高效率,那么您将使用一个回收视图并在选择之间交换数据,并对其进行动画处理,使其看起来像是创建了一个新的回收视图。
我的 MainActivity 3 RecyclerViews 中有 .
其中一个在底部 sheet 并且它是主要的(默认情况下底部 sheet 是打开显示这个),在它的 adapter 的 onbind 方法 我做了一个 onClickListener 这样我想当用户点击其中的一个项目时,
我想回到主界面 activity class 来设置启动一个 方法 它滚动的是关闭底部 Sheet并设置下一个回收视图的数据(当底部Sheet关闭时会出现)
..... 这里的问题是如何从 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) {
}
});
}
你可以轻松做到这一点。
定义自定义界面
public Interface CustomEventListener
{
public void MyEventListener(String message); //you can change parameters
}
在你的适配器中class
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");
}
});
}
}
在你的Activity创建适配器时添加这段代码
public void InitAdapter()
{
yourAdapter = new Adapter(); // bloa bla bla
yourAdapter.setListener(new CustomEventListener() {
public void MyEventListener(String message)
{
// then do what you want
}
}
}
您需要使用监听器来处理适配器中的点击,如下所示:
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.
}
});
最简单:
您在 Activity 中声明了要调用的方法。必须是 public:
public void method(){}
然后,在适配器的构造函数中,将对 Activity 的引用作为参数传递:
public MyAdapter(Activity activity){}
并且,在 onBindViewHolder 中:
MyActivity mActivity=(MyActivity)activity;
mActivity.method();
您希望您的回收视图相互了解。您将需要一个 class,也许是 MainActivity,它将保留选定的值,并根据请求在回收视图之间清除它。然后您将需要该值来传播下一个回收视图。如果您想提高效率,那么您将使用一个回收视图并在选择之间交换数据,并对其进行动画处理,使其看起来像是创建了一个新的回收视图。