簡體   English   中英

如何在不更新數據的情況下將數據存儲到firebase數據庫中? 並檢索數據

[英]How do I store a data into the firebase database without updating it? and also retrieving the data

我目前正在開展一個項目,可能在商店訂購食品時很有用。 設備已經可以存儲一些數據並檢索但是我遇到了一些問題。

問題1#:首先,每次我存儲數據時,它通常如下所示:

在此輸入圖像描述

出於某種原因,我試圖使用子“02”,因為它顯示在回收者視圖中,如果我像孩子一樣做“訂購”,它似乎沒有在顯示器中顯示。 我如何添加更多數據,例如孩子02中的例子我仍然可以添加像奶昔或糖果棒? 這是我為存儲所做的代碼。

public class Detailsoforder extends AppCompatActivity {

    private static final String TAG = "AddToDatabase";

    private TextView titles;
    private TextView increase;
    private int count = 0;

    //add Firebase
    private FirebaseDatabase mFirebaseDatabase;
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;
    private DatabaseReference myRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detailsoforder);

        titles = findViewById(R.id.Order);
        increase = findViewById(R.id.Increase);
        String title = getIntent().getStringExtra("title");

        titles.setText(title);

        mAuth = FirebaseAuth.getInstance();
        mFirebaseDatabase = FirebaseDatabase.getInstance();
        myRef = mFirebaseDatabase.getReference();

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in
                    Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
                } else {
                    // User is signed out
                    Log.d(TAG, "onAuthStateChanged:signed_out");
                }
            }
        };

        // Read from the database
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                Object value = dataSnapshot.getValue();
                Log.d(TAG,"Value is"+value);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

    public void onIncreaseClick(View view) {

        count++;
        increase.setText(String.valueOf(count));

    }

    public void onOrderNow(View view) {

        String value = increase.getText().toString();

        if (value.equals("1")) {

            Toast.makeText(Detailsoforder.this,"The order must be above 1", Toast.LENGTH_LONG).show();

        }
        else {
            Log.d(TAG, "onClick: Attempting to add object to database.");
            String newFood = titles.getText().toString();
            if (!newFood.equals("")) {
                FirebaseUser user = mAuth.getCurrentUser();
                String userID = user.getUid();
                myRef.child(userID).child("02").child("food").setValue(newFood);
                myRef.child(userID).child("02").child("order").setValue(value);
                Toast.makeText(Detailsoforder.this,"Adding " + newFood + " to database...", Toast.LENGTH_LONG).show();
                //reset the text
                titles.setText("");
                Intent intent = new Intent(Detailsoforder.this, Placeorder.class);
                startActivity(intent);
            }
        }


    }

    @Override
    public void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(mAuthListener);
    }

    @Override
    public void onStop() {
        super.onStop();
        if (mAuthListener != null) {
            mAuth.removeAuthStateListener(mAuthListener);
        }
    }
}

如何存儲許多數據而不需要更新?

問題2#:檢索數據。 問題是我似乎只能獲得1個數據。 我想首先修復商店部分,以便我可以檢查是否可以獲得許多信息。 這是我檢索數據的代碼。

public class Vieworders extends AppCompatActivity {

private RecyclerView mRecyclerView1;
private ViewHolder1 mAdapter1;
private DatabaseReference mDatabaseReference1;
private List<Model1> mModel1;
private FirebaseAuth mAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_vieworders);

    mRecyclerView1= findViewById(R.id.recyclerview1);
    mRecyclerView1.setHasFixedSize(true);
    mRecyclerView1.setLayoutManager(new LinearLayoutManager(this));

    mModel1 = new ArrayList<>();
    mAuth = FirebaseAuth.getInstance();
    FirebaseUser user = mAuth.getCurrentUser();
    String userID = user.getUid();
    mAdapter1=new ViewHolder1(Vieworders.this, mModel1);
    mRecyclerView1.setAdapter(mAdapter1);
    mDatabaseReference1= FirebaseDatabase.getInstance().getReference(userID);
    mDatabaseReference1.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot postSnapshot:dataSnapshot.getChildren())
            {
                Model1 model1=postSnapshot.getValue(Model1.class);
                mModel1.add(model1);
            }
            mAdapter1.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Toast.makeText(Vieworders.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();
        }
    });
}

有人能幫助我嗎? 我真的需要這樣做。

我認為您能夠發送數據並能夠存儲這些數據。 現在,這是我從Firebase獲取數據的一小部分。您可以從此代碼中獲取幫助。

 private RecyclerView recyclerView;
    private List<RoomRentData> firebaselist;
    private DatabaseReference mFirebaseDatabase;
    private FirebaseDatabase mFirebaseInstance;
    private DualProgressView progressView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_rent_activity);

        firebaselist=new ArrayList<>();
        recyclerView=findViewById(R.id.rent_item);
        progressView=findViewById(R.id.progressbar);
        progressView.setVisibility(View.VISIBLE);
        recyclerView.setLayoutManager(new GridLayoutManager(getApplicationContext(),1));
        recyclerView.setItemAnimator( new DefaultItemAnimator());
        recyclerView.hasFixedSize();

        final Calendar today = Calendar.getInstance();
        String year=Integer.toString(today.get(Calendar.YEAR));

        mFirebaseInstance = FirebaseDatabase.getInstance();
        mFirebaseDatabase = mFirebaseInstance.getReference("room_rent").child(year);

        mFirebaseDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                progressView.setVisibility(View.GONE);

                System.out.println("1");
                RoomRentData user = dataSnapshot.getValue(RoomRentData.class);

                if (user == null) {
                    System.out.println("2");
                    Toast.makeText(ShowRentActivity.this,"No data found",Toast.LENGTH_LONG).show();
                    return;
                }else {
                    for(DataSnapshot dataSnapshot1 :dataSnapshot.getChildren()){
                        System.out.println("datasnapshot 1"+dataSnapshot1);
                        System.out.println("3");
                        RoomRentData userdetails = dataSnapshot1.getValue(RoomRentData.class);

                        System.out.println("userdetails 1"+userdetails);
                        RoomRentData listdata = new RoomRentData();
                        String month=userdetails.getMonth();
                        String year=userdetails.getYear();
                        String cuRead=userdetails.getCurrentRead();
                        String prevRead=userdetails.getPrevUnit();
                        String totalRent=userdetails.getTotalRoomRent();

                        String perPersonCost=userdetails.getPerpersonCost();
                        String totalPeron=userdetails.getTotalPerson();
                        String paidOn=userdetails.getCurrentTimeAndDate();
                        String description=userdetails.getDescription();

                        System.out.println("description 1"+description);
                        System.out.println("month"+month);

                        listdata.setMonth(month);
                        listdata.setYear(year);
                        listdata.setCurrentRead(cuRead);
                        listdata.setPrevUnit(prevRead);
                        listdata.setTotalRoomRent(totalRent);
                        listdata.setPerpersonCost(perPersonCost);
                        listdata.setTotalPerson(totalPeron);
                        listdata.setCurrentTimeAndDate(paidOn);
                        listdata.setDescription(description);


                        firebaselist.add(listdata);
                    }

                    rentAdapter firebaseListAdapter=new rentAdapter(getApplicationContext(),firebaselist);
                    recyclerView.setAdapter(firebaseListAdapter);
                }
            }

            @Override
            public void onCancelled(DatabaseError error) {
                progressView.setVisibility(View.GONE);
                System.out.println(error);
                System.out.println("error");
            }
        });
    }
}

我創建了一個名為RoomRentData.class的Model Class。我已使用此模型將此數據添加到RecyclerView。

這是我的模型類代碼。

public class RoomRentData {

    private String month;
    private String year;
    private String roomRent;
    private String perUnitCost;
    private String PrevUnit;
    private String CurrentRead;
    private String totalUnitCostt;
    private String totalRoomRent;
    private String totalPerson;
    private String perpersonCost;
    private String description;
    private String currentTimeAndDate;

    public String getCurrentRead() {
        return CurrentRead;
    }

    public String getCurrentTimeAndDate() {
        return currentTimeAndDate;
    }

    public String getDescription() {
        return description;
    }

    public String getMonth() {
        return month;
    }

    public String getPerpersonCost() {
        return perpersonCost;
    }

    public String getPerUnitCost() {
        return perUnitCost;
    }

    public String getPrevUnit() {
        return PrevUnit;
    }

    public String getRoomRent() {
        return roomRent;
    }

    public String getTotalPerson() {
        return totalPerson;
    }

    public String getTotalRoomRent() {
        return totalRoomRent;
    }

    public String getTotalUnitCostt() {
        return totalUnitCostt;
    }

    public String getYear() {
        return year;
    }

    public void setCurrentRead(String currentRead) {
        CurrentRead = currentRead;
    }

    public void setCurrentTimeAndDate(String currentTimeAndDate) {
        this.currentTimeAndDate = currentTimeAndDate;
    }

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

    public void setMonth(String month) {
        this.month = month;
    }

    public void setPerpersonCost(String perpersonCost) {
        this.perpersonCost = perpersonCost;
    }

    public void setPerUnitCost(String perUnitCost) {
        this.perUnitCost = perUnitCost;
    }

    public void setPrevUnit(String prevUnit) {
        PrevUnit = prevUnit;
    }

    public void setRoomRent(String roomRent) {
        this.roomRent = roomRent;
    }

    public void setTotalPerson(String totalPerson) {
        this.totalPerson = totalPerson;
    }

    public void setTotalRoomRent(String totalRoomRent) {
        this.totalRoomRent = totalRoomRent;
    }

    public void setTotalUnitCostt(String totalUnitCostt) {
        this.totalUnitCostt = totalUnitCostt;
    }

    public void setYear(String year) {
        this.year = year;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM