【问题标题】:retrive data from firestrore in a recyclerview在 recyclerview 中从 firestore 检索数据
【发布时间】:2021-12-31 00:44:35
【问题描述】:

我在 youtube 和博客中关注了一些视频,以创建一个从 firestore 检索数据的 recyclerview。应用程序运行成功,但它是空白的。

我想要做的是创建一个回收器,以获取有关描述的帖子的图像和标题。之后我会将它添加到其他布局中。

这是我的代码

public class MainActivity extends AppCompatActivity {
    RecyclerView recview;
    PostAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recview=(RecyclerView)findViewById(R.id.BourceRecycler);
        recview.setLayoutManager(new LinearLayoutManager(this));

        FirebaseRecyclerOptions<Post> options =
                new FirebaseRecyclerOptions.Builder<Post>()
                        .setQuery(FirebaseDatabase.getInstance().getReference().child("Bources"), Post.class)
                        .build();

        adapter=new PostAdapter(options);
        recview.setAdapter(adapter);

    }

    @Override
    protected void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }}


adapter 

    

    public class PostAdapter extends FirebaseRecyclerAdapter<Post, PostAdapter.PostViewHolder> {
    public PostAdapter(@NonNull FirebaseRecyclerOptions<Post> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull PostViewHolder holder, int position, @NonNull Post model)
    {
        holder.headline.setText(model.getHeadline());
        Glide.with(holder.img.getContext()).load(model.getImage()).into(holder.img);
    }

    @NonNull
    @Override
    public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.post,parent,false);
        return new PostViewHolder(view);
    }


    public class PostViewHolder extends RecyclerView.ViewHolder {
        ImageView img;
        TextView headline, description;


        public PostViewHolder(@NonNull View itemView) {
            super(itemView);
            img = (ImageView) itemView.findViewById(R.id.image);
            headline = (TextView) itemView.findViewById(R.id.headline);
        }
    }}


Post

    public class Post {
    String image;
    String headline;
    String description;
    public Post(){}


    public Post(String image, String headline, String description) {
        this.image = image;
        this.headline = headline;
        this.description = description;

    }

    public void setImage(String image) {
        this.image = image;
    }

    public void setHeadline(String headline) {
        this.headline = headline;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getImage() {
        return image;
    }

    public String getHeadline() {
        return headline;
    }

    public String getDescription() {
        return description;
    }
}

【问题讨论】:

    标签: android google-cloud-firestore android-recyclerview firebaseui


    【解决方案1】:

    您使用google-cloud-firestore 进行了标记,但您的代码正在使用FirebaseDatabase.getInstance() 从实时数据库中读取。这两个数据库都是 Firebase 的一部分,但它们是完全独立的,一个的 API 不能在另一个上运行。

    要从 Firestore 读取,请使用 FirestoreDatabase.getInstance()FirestoreRecyclerAdapter from FirebaseUI

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 2021-09-06
      • 2020-03-13
      • 2020-08-23
      • 2020-04-04
      • 2021-02-22
      • 1970-01-01
      相关资源
      最近更新 更多