【发布时间】:2021-05-27 17:45:39
【问题描述】:
我的应用程序中出现了一个非常奇怪的错误。为了更清楚,我将创建一个带有减号的类似示例。
我正在使用 addListenerForSingleValueEvent 从 Firebase 实时数据库 中读取对象。当我阅读对象时,我将它们存储在一个数组中,我将其传递给 Recycleview 中的 Adapter。在这一点上,我可以说,经过调试,一切似乎都可以正常工作。
然后在Adapter中,我有类似这样的代码:
public class AdapterObject extends RecyclerView.Adapter<AdapterObject.ViewHolder> {
ArrayList<Object> objectList;
Context mContext;
public AdapterObject (Context context, ArrayList<Object> objectList){
this.mContext = context;
this.objectList = objectList;
}
@NonNull
@Override
public AdapterObject.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.object_grid_layout, parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AdapterObject.ViewHolder holder, int position) {
Object o = objectList.get(position);
Log.d("TAG", o.getAtribute());
if (o.getAtribute().equals("A")){
holder.atribute.setVisibility(View.VISIBLE);
}
@Override
public int getItemCount() {
return objectList.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView atribute;
boolean favorite;
String descuento, precioOriginal;
public ViewHolder(@NonNull View itemView) {
super(itemView);
atribute = itemView.findViewById(R.id.atribute);
}
}
}
如你在代码中所见,如果当前对象具有属性值== "A",则显示他的Textview,否则, Textview 保持隐藏状态。
当我调试它时一切似乎都是正确的,因为对象及其属性对应于数据库,但是当我在 Android 模拟器中部署应用程序并开始在 Recycleview 上上下移动时,持有者开始显示 Textviews 尽管控制台调试似乎正确...
这在 RecycleViews 中正常吗?我该如何解决?我找到了this,你觉得有关系吗?
【问题讨论】:
标签: java firebase android-recyclerview android-adapter android-viewholder