Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不使用内置firebase UI的情况下使用firebase firestore填充Recyclerview_Java_Android_Firebase_Android Recyclerview_Native Ads - Fatal编程技术网

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

Java 如何在不使用内置firebase UI的情况下使用firebase firestore填充Recyclerview,java,android,firebase,android-recyclerview,native-ads,Java,Android,Firebase,Android Recyclerview,Native Ads,我是android studio的新手,在一个问题上需要一些帮助 我最初有一个FirestoreRecyclerAdapter,但我经常使用集成广告。查看教程和其他资源后,我决定重新制作适配器并使用常规的recyclerview 现在,关于这个问题,我已经完成了recyclerview,但是我在尝试从Firebase Firestore填充数据时遇到了问题 回收视图适配器 public class adapterRegular extends RecyclerView.Adapter<Re

我是android studio的新手,在一个问题上需要一些帮助

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

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

回收视图适配器

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,parent,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;
        }
    }
}
公共类适配器Regular扩展了RecyclerView.Adapter{
私有最终静态int类型_AD=0;
私有最终静态整数类型_REG=1;
私人语境;
私人名单;
公共无效设置数据(列表注释){
this.noteList.addAll(note);
}
公共无效设置广告(列表广告){
this.noteList.addAll(ads);
}
@凌驾
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder,int位置){
int viewtype=getItemViewType(位置);
如果(视图类型==类型_AD){
AdTemplateViewHolder AdTemplateViewHolder=(AdTemplateViewHolder)holder;
adTemplateViewHolder.setUnifiedNativeEAD((UnifiedNativeEAD)noteList.get(position));
}
Note=(Note)noteList.get(位置);
票据持有人票据持有人=(票据持有人)持有人;
noteHolder.ownerName.setText(note.getOwnerName());
noteHolder.text.setText(note.getPost());
}
@非空
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
context=parent.getContext();
如果(视图类型==类型_AD){
视图=LayoutFlater.from(上下文)。充气(R.layout.Reclayers,parent,false);
返回新的AdTemplateViewHolder(视图);
}
视图=LayoutFlater.from(上下文)。充气(R.layout.list\u行,父级,false);
返回新的票据持有人(视图);
}
@凌驾
public int getItemCount(){
返回noteList.size();
}
公共类noteHolder扩展了RecyclerView.ViewHolder{
文本视图所有者名称;
文本视图时间戳;
文本查看文本;
ImageView-imageURL;
文本视图回复;
文本视图喜欢;
影像观察心脏;
公共票据持有人(@NonNull View itemView){
超级(项目视图);
ownerName=itemView.findViewById(R.id.userName);
timestamp=itemView.findviewbyd(R.id.time);
text=itemView.findviewbyd(R.id.post);
imageURL=itemView.findViewById(R.id.profilePic);
replies=itemView.findViewById(R.id.REPLY);
likes=itemView.findviewbyd(R.id.likes);
heart=itemView.findviewbyd(R.id.heart);
}
}
公共类AdTemplateViewHolder扩展了RecyclerView.ViewHolder{
TemplateView TemplateView;
公共AdTemplateViewHolder(@NonNull View itemView){
超级(项目视图);
templateView=itemView.findViewById(R.id.my_模板);
NativeTemplateStyle=新的NativeTemplateStyle.Builder()
.withMainBackgroundColor(新的ColorDrawable(Color.parseColor(#FFFFFF))).build();
templateView.setStyles(样式);
}
公共无效设置UnifiedNativeEAD(UnifiedNativeEAD ads){
templateView.setNativeAd(ads);
}
}
@凌驾
public int getItemViewType(int位置){
if(noteList.get(position)instanceof UnifiedNativeEAD){
返回类型_-AD;
}否则{
返回类型_REG;
}
}
}
我如何设置FIRESTORERECYCLERVIEW

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

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);

FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,Note.class)
.build();
适配器=新适配器(选项);
recyclerView=v.findViewById(R.id.recycle);
recyclerView.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(recyclerView.getContext());
recyclerView.setAdapter(适配器);
感谢您的帮助