在我的主要活动中,我有三个循环利用的观点。
其中一个在底部工作表中,它是主要的(默认情况下,底部工作表是打开以显示这个),在其适配器的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) {
}
});
}
您需要使用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.
}
});
你可以很容易地做到这一点。
定义自定义接口
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
}
}
}
简单:
在活动中声明要调用的方法。它必须是公开的:
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返回第一个位置。 有什么想法吗?