Java 如何在不使用内置firebase UI的情况下使用firebase firestore填充Recyclerview
我是android studio的新手,在一个问题上需要一些帮助 我最初有一个FirestoreRecyclerAdapter,但我经常使用集成广告。查看教程和其他资源后,我决定重新制作适配器并使用常规的recyclerview 现在,关于这个问题,我已经完成了recyclerview,但是我在尝试从Firebase Firestore填充数据时遇到了问题 回收视图适配器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
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(适配器);
感谢您的帮助