Как получить последнюю запись из базы данных Firebase в реальном времени? - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь получить данные от одного пользователя и отправить те же данные другому пользователю. Я не уверен, что нужно указать в качестве аргумента в child, чтобы он ссылался на те же данные, и я могу получить и показать данные другому пользователю для утверждения. Я могу отправить изображение, но для полей данных, таких как посетитель, мобильный и плоский, не знаю, что делать.

Мой код выглядит следующим образом.

Ввод данных Код файла

public class Main4Activity extends AppCompatActivity {
    private static final int PERMISSION_CODE = 1000;
    private static final int IMAGE_CAPTURE_CODE = 1001;

    Button btn;
    ImageView imageView;
    static Uri image_uri;
    ImageView mImageView;
    TextView mCaptureBtn;
    Button uploadbtn;
    static String downloadurl;


    public static String Dvisitor;
    public static String Dmobile;

    static DatabaseReference reff;
    //for upload
    private Uri filePath;
    private final int PICK_IMAGE_REQUEST = 71;
    FirebaseStorage storage;
    StorageReference storageReference;
    //for upload

    static String URL;

    //Data store of Visitor
    static EditText visitor;
    static EditText mbnumber;
    EditText bnmbr;
    static EditText fnmbr;
    EditText emal;
    EditText pswrd;

    HashMap<String,Object> map = new HashMap<>();





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









        //for upload
        storage = FirebaseStorage.getInstance();
        storageReference = storage.getReference();
        //for upload

        mImageView = (ImageView) findViewById(R.id.imageView2);
        mCaptureBtn = (TextView) findViewById(R.id.textView4);

        //Data for Visitor
        visitor = (EditText) findViewById(R.id.vname);
        mbnumber = (EditText) findViewById(R.id.mnumber);
        bnmbr = (EditText) findViewById(R.id.blknmbr);
        fnmbr = (EditText) findViewById(R.id.fltnmbr);
        emal = (EditText) findViewById(R.id.emailId);
        pswrd = (EditText) findViewById(R.id.passwordfield2);




        btn = (Button) findViewById(R.id.button);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                upload();


                FirebaseDatabase.getInstance().getReference().child("Image").push().setValue(map)

                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                map.put("visitor",visitor.getText().toString());
                                map.put("mobile",mbnumber.getText().toString());
                                map.put("block",bnmbr.getText().toString());
                                map.put("flat",fnmbr.getText().toString());
                                map.put("email",emal.getText().toString());
                                map.put("password",pswrd.getText().toString());
                                Toast.makeText(Main4Activity.this, "Successful data registration", Toast.LENGTH_SHORT).show();

                            }
                        }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(Main4Activity.this, "Failed data registration", Toast.LENGTH_SHORT).show();
                    }
                });




            }


        });



















        //Camera functionality click and upload starts





        mCaptureBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED || checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
                        String[] permission = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
                        requestPermissions(permission, PERMISSION_CODE);
                    } else {

                        openCamera();

                    }
                } else {

                    openCamera();

                }

            }
        });


        imageView = (ImageView) findViewById(R.id.imageView);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main4Activity.this, MainActivity.class);
                startActivity(intent);

            }
        });






    }




    private void openCamera() {

        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "New Picture");
        values.put(MediaStore.Images.Media.DESCRIPTION, "From the Camera");

        image_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
        startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);

        {




        }


    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case PERMISSION_CODE: {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    openCamera();
                } else {
                    Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {


        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            mImageView.setImageURI(image_uri);
        }

    }






    private void upload(){



            if(image_uri != null)
            {
                final ProgressDialog progressDialog = new ProgressDialog(this);
                progressDialog.setTitle("Uploading...");
                progressDialog.show();

                final StorageReference ref = storageReference.child("images/"+ UUID.randomUUID().toString());
                ref.putFile(image_uri)
                        .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                progressDialog.dismiss();

                                Toast.makeText(Main4Activity.this, "Uploaded", Toast.LENGTH_SHORT).show();
                                ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                    @Override
                                    public void onSuccess(Uri uri) {
                                        DatabaseReference imagestore = FirebaseDatabase.getInstance().getReference().child("Image").push();
                                        //HashMap<String, String> hasmap = new HashMap<>();

                                        URL = uri.toString();

                                        map.put("imgurl",URL);





                                        //map.put("imageurl", String.valueOf(uri));
                                        imagestore.setValue(map).addOnSuccessListener(new OnSuccessListener<Void>() {
                                            @Override
                                            public void onSuccess(Void aVoid) {
                                                Intent intent= new Intent(Main4Activity.this,Main5Activity.class);
                                                startActivity(intent);



                                            }


                                        });


                                        //This is your image url do whatever you want with it.
                                    }
                                });


                            }
                        })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                progressDialog.dismiss();
                                Toast.makeText(Main4Activity.this, "Failed "+e.getMessage(), Toast.LENGTH_SHORT).show();
                            }
                        })
                        .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                                double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot
                                        .getTotalByteCount());
                                progressDialog.setMessage("Uploaded " + (int) progress + "%");

                            }
                        });

        }




    }


}

//Camera functionality click and upload starts

Код для подтверждения другим пользователем

public class Main5Activity extends AppCompatActivity {
    Button btnAllow, btnProhibit;
    private String Dvisitor;
    private String Dmobile;
    private String Dflat;

    DatabaseReference reff;
    ImageView img;

    private DatabaseReference Post;



    static TextView textView;
    String roadies;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main5);
        btnAllow = (Button) findViewById(R.id.button);
        btnProhibit = (Button) findViewById(R.id.button2);
        textView = (TextView) findViewById(R.id.textView5);
        img = (ImageView) findViewById(R.id.imageView3);

        imageshow();


        init();
        readonetime();









    }

    private void readonetime() {
        Query query = Post.orderByKey().limitToLast(1);

        query.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot child: dataSnapshot.getChildren()) {
                    String post = dataSnapshot.child("visitor").getValue(String.class);
                    String post1 = dataSnapshot.child("mobile").getValue(String.class);
                    String post2 = dataSnapshot.child("flat").getValue(String.class);
                    textView.setText("Mr. "+post+"with mobile number: " + post1+"wants to visit your flat: " + post2);
                }

            }

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

            }
        });
    }

    private void init() {
        Post = FirebaseDatabase.getInstance().getReference().child("Image");
    }


    private void imageshow() {
        reff = FirebaseDatabase.getInstance().getReference().child("Image");
        reff.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                Picasso.get().load(Main4Activity.URL).fit().into(img);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(Main5Activity.this, "OoooooLalalala", Toast.LENGTH_SHORT).show();
            }
        });


        btnAllow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main5Activity.this, Main8Activity.class);
                startActivity(intent);
            }
        });

        btnProhibit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main5Activity.this, Main9Activity.class);
                startActivity(intent);
            }
        });
    }


}

1 Ответ

1 голос
/ 01 мая 2020

В вашем Main5Activity я думаю:

Это:

for(DataSnapshot child: dataSnapshot.getChildren()) {
    String post = dataSnapshot.child("visitor").getValue(String.class);
    String post1 = dataSnapshot.child("mobile").getValue(String.class);
    String post2 = dataSnapshot.child("flat").getValue(String.class);
    textView.setText("Mr. "+post+"with mobile number: " + post1+"wants to visit your flat: " + post2);
}

Должно быть так:

for(DataSnapshot ds: dataSnapshot.getChildren()) {
    String post = ds.child("visitor").getValue(String.class);
    String post1 = ds.child("mobile").getValue(String.class);
    String post2 = ds.child("flat").getValue(String.class);
    textView.setText("Mr. "+post+"with mobile number: " + post1+"wants to visit your flat: " + post2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...