如何在不使用内置 firebase UI 的情况下使用 firebase firestore 填充 Recyclerview

问题描述

我是 android studio 的新手,想在问题上得到一些帮助。

我最初有一个 FirestoreRecyclerAdapter ,但我经常使用它来集成广告。查看教程和其他资源,我决定重新制作我的适配器并使用常规 recyclerview。

现在我已经完成了 recyclerview 的问题,但是我在尝试从 Firebase Firestore 填充数据时遇到了问题。

recyclerview 适配器

public class adapterRegular extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private final static int TYPE_AD=0;
    private final static int TYPE_REG=1;

    private Context context;
    private List<Object> noteList;

    public void setData(List<Note> note){
        this.noteList.addAll(note);
    }

    public void setAds(List<UnifiednativeAd> ads){
        this.noteList.addAll(ads);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder,int position) {
        int viewtype = getItemViewType(position);
        if(viewtype == TYPE_AD){
            AdTemplateViewHolder adTemplateViewHolder = (AdTemplateViewHolder)holder;
            adTemplateViewHolder.setUnifiednativeAd((UnifiednativeAd) noteList.get(position));
        }

        Note note = (Note) noteList.get(position);
        noteHolder noteHolder = (noteHolder)holder;

        noteHolder.ownerName.setText(note.getownerName());
        noteHolder.text.setText(note.getPost());



    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
        context = parent.getContext();
        if(viewType == TYPE_AD){
            View view = LayoutInflater.from(context).inflate(R.layout.reclyerads,parent,false);
            return new AdTemplateViewHolder(view);
        }
        View view = LayoutInflater.from(context).inflate(R.layout.list_row,false);
        return new noteHolder(view);
    }

    @Override
    public int getItemCount() {
        return noteList.size();
    }

    public class noteHolder extends RecyclerView.ViewHolder{
        TextView ownerName;
        TextView timestamp;
        TextView text;
        ImageView imageURL;
        TextView replies;
        TextView likes;
        ImageView heart;

        public noteHolder(@NonNull View itemView) {
            super(itemView);
            ownerName = itemView.findViewById(R.id.userName);
            timestamp = itemView.findViewById(R.id.time);
            text = itemView.findViewById(R.id.post);
            imageURL = itemView.findViewById(R.id.profilePic);
            replies = itemView.findViewById(R.id.REPLY);
            likes = itemView.findViewById(R.id.likes);
            heart = itemView.findViewById(R.id.heart);
        }
    }

    public class AdTemplateViewHolder extends RecyclerView.ViewHolder{
        TemplateView templateView;

        public AdTemplateViewHolder(@NonNull View itemView) {
            super(itemView);
            templateView = itemView.findViewById(R.id.my_template);
            NativeTemplateStyle style = new NativeTemplateStyle.Builder()
                    .withMainBackgroundColor(new ColorDrawable(Color.parseColor("#FFFFFF"))).build();
            templateView.setStyles(style);
        }
        public void setUnifiednativeAd(UnifiednativeAd ads){
            templateView.setNativeAd(ads);
        }

    }

    @Override
    public int getItemViewType(int position) {
        if (noteList.get(position) instanceof UnifiednativeAd) {
            return TYPE_AD;
        }else {
            return TYPE_REG;
        }
    }
}

我如何设置 FirsTORERECYCLERVIEW

我想要类似的东西,但对于另一个适配器。

FirestoreRecyclerOptions<Note> options = new FirestoreRecyclerOptions.Builder<Note>()
                .setQuery(query,Note.class)
                .build();

        adapter = new adapter(options);
        recyclerView = v.findViewById(R.id.recycle);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new linearlayoutmanager(recyclerView.getContext()));

        recyclerView.setAdapter(adapter);

感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)