无法在Android中检索Firebase数据库

时间:2018-10-25 07:19:39

标签: java android firebase firebase-realtime-database

我无法检索Firebase数据库。我能够成功将数据上传到Firebase,但是当我想要检索Databasse时,它将显示空白屏幕。 这是Firebase数据库映像

enter image description here

我的代码是

public class SubjectBooks extends AppCompatActivity {
    FirebaseAuth fauth;
    String user;
    DatabaseReference dbreference,dbref;
    RecyclerView rv;
 String subject;
    int child_count=0;
    ArrayList<Books> list;
    SubjectBooksAdapter staggeredBooksAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_subject_books_request);
        getSupportActionBar().setTitle("Request for Room");
     // this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
     // this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_share);

        fauth = FirebaseAuth.getInstance();
        subject = getIntent().getStringExtra("subject").trim();

        dbreference = FirebaseDatabase.getInstance().getReference("roomrequest").child("request");
        dbreference.keepSynced(true);
        user = fauth.getCurrentUser().getEmail();

        list = new ArrayList<>();
        staggeredBooksAdapter = new SubjectBooksAdapter(list);

        rv = (RecyclerView) findViewById(R.id.recyclerView);
        rv.setHasFixedSize(true);
        LinearLayoutManager llm = new LinearLayoutManager(this);
        rv.setLayoutManager(llm);
        rv.setAdapter(staggeredBooksAdapter);

        dbreference.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                final Books b1 = dataSnapshot.getValue(Books.class);
              //  Log.e("Value is ",dataSnapshot.getKey()+" "+b1.getBauthor());
                //Log.e("Book"," received");
                if(!user.equals(b1.getSelleremail())) {
                    child_count++;
                    list.add(b1);
                    staggeredBooksAdapter.notifyDataSetChanged();
                }
               // Log.e("Has child : ", dataSnapshot.getKey());
//                if(child_count==0){
//                    Toast.makeText(SubjectBooks.this, "No books found!", Toast.LENGTH_SHORT).show();
//                    Intent in = new Intent(SubjectBooks.this, BooksPage.class);
//                    startActivity(in);
//                    finish();
//                }
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }
}

我的适配器的代码是

public class SubjectBooksAdapter extends RecyclerView.Adapter<SubjectBooksAdapter.MyViewHolder> {
    ArrayList<Books> bookslist;
    CardView cv;
    FirebaseAuth fauth;
    FirebaseDatabase database;
    DatabaseReference dbreference;
    Books b;

    public SubjectBooksAdapter(ArrayList<Books> bookslist){
        this.bookslist = bookslist;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_request,parent,false);
        return new MyViewHolder(v);
    }

   public class MyViewHolder extends RecyclerView.ViewHolder {

        TextView bookName,bookAuthor,bookDesc,bookPrice,bookCall;
        ImageView iv;

        MyViewHolder(final View itemView) {
            super(itemView);
            cv = (CardView) itemView.findViewById(R.id.my_card_view);

            iv = (ImageView) itemView.findViewById(R.id.imageView);

            database = FirebaseDatabase.getInstance();
            dbreference = database.getReference("roomrequest");
            bookName = (TextView) itemView.findViewById(R.id.bookName);
            bookAuthor = (TextView) itemView.findViewById(R.id.bookAuthor);
            bookDesc = (TextView) itemView.findViewById(R.id.bookDesc);
            bookPrice = (TextView) itemView.findViewById(R.id.bookPrice);
            bookCall = (TextView) itemView.findViewById(R.id.bookCall);
            fauth = FirebaseAuth.getInstance();
        }
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {

        database = FirebaseDatabase.getInstance();
        dbreference = database.getReference("roomrequest");

        b = bookslist.get(position);
        holder.bookName.setText(b.getBname());
        holder.bookAuthor.setText(b.getBauthor());
        holder.bookDesc.setText(b.getBdesc());
        holder.bookPrice.setText("Rs. "+b.getPrice());
        holder.bookCall.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Log.e("Current user is ", fauth.getCurrentUser().getEmail());

            }
        });
        Glide.with(cv.getContext()).load(Uri.parse(b.getPics())).placeholder(R.drawable.bshelf).error(R.drawable.bshelf).into(holder.iv);

    }

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

我运行代码并成功编译..it,编译成功。当启动应用程序时,它显示空白屏幕。

如果您还想知道其他详细信息,请发表评论,我很乐意根据您的要求提供详细信息。

0 个答案:

没有答案