当前位置: 首页 > 知识库问答 >
问题:

RecyclerView适配器onBind方法

麹权
2023-03-14

在我的主要活动中,我有三个循环利用的观点。

其中一个在底部工作表中,它是主要的(默认情况下,底部工作表是打开以显示这个),在其适配器的onbind方法中,我做了一个onClickListener,以便当用户单击其中的项目时,我想要,

我想回到主活动类来设置To Start一个方法,它的滚动是关闭底表并为下一个回收视图设置数据(当底表关闭时会出现)

......这里的问题是如何从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) {


            }
        });


    }

共有3个答案

岑彬炳
2023-03-14

您需要使用Listener来处理适配器中的单击,如下所示:

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.
    }
});
孙志
2023-03-14

你可以很容易地做到这一点。

定义自定义接口

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
      }   
 }
}
裴威
2023-03-14

简单:

在活动中声明要调用的方法。它必须是公开的:

public void method(){}

然后,在适配器的构造函数中,将对活动的引用作为参数传递:

public MyAdapter(Activity activity){}

而且,在onBindViewHolder中:

MyActivity mActivity=(MyActivity)activity;
mActivity.method();
 类似资料:
  • 当我开始搜索/筛选recyclerview列表结果时,我就会从搜索适配器中的onBind方法获取IndexOutofBoundsException。这里有个例外: 我在网上试了几篇文章,但没有成功。我尝试的一些文章是:RecolyerView适配器onBind方法和RecolyerView:Inconsistency Detected。无效的物料位置 此问题的适配器代码位于:https://pas

  • 一切正常。但Logcat中显示了一些错误。 E/RecyclerView:未附加适配器;跳过布局 E/RecyclerView:未附加适配器;跳过布局 我的activity代码: 我读过与同一问题有关的其他问题,但都没有帮助。请帮帮我

  • 本文向大家介绍Android实现的RecyclerView适配器,包括了Android实现的RecyclerView适配器的使用技巧和注意事项,需要的朋友参考一下 这个适配器我珍藏已久(近两年), 不断看到别人发适配器相关的文章, 但我总觉得没我的好用, 所以今日拿出来分享(宣传)一下, 欢迎各位指正不足. 源码地址: GitHub 功能 无需继承 Adapter, 无需判断 item 类型. 支

  • 我正尝试使用实现的适配器,如下所示,正如这里的解决方案之一所建议的。

  • AdapterClass: 提前感谢你的帮助。

  • 我延长了 当我打电话的时候: 什么也没发生。 刷新视图的唯一方法是再次设置适配器(请参见此答案): 我对此解决方案有两个问题: 当我再次设置适配器时,我可以看到屏幕上有一个闪烁 listview返回第一个位置。 有什么想法吗?