send data-
step 1:- activity_send.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingEnd="20dp"
android:background="@color/white"
android:paddingStart="20dp"
tools:context=".data.DataSendActivity">
<!-- <de.hdodenhof.circleimageview.CircleImageView-->
<!-- android:layout_width="80dp"-->
<!-- android:layout_height="80dp"-->
<!-- android:scaleType="center"-->
<!-- android:id="@+id/imgUploadImage"/>-->
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:src="@drawable/ic_launcher_background"
android:id="@+id/imgUploadImage"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edt_bg"
android:padding="15dp"
android:layout_marginTop="20dp"
android:hint="Name"
android:inputType="textPersonName"
android:id="@+id/edtName"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edt_bg"
android:padding="15dp"
android:inputType="phone"
android:layout_marginTop="10dp"
android:hint="Age"
android:id="@+id/edtAge"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edt_bg"
android:padding="15dp"
android:layout_marginTop="10dp"
android:hint="Mobile"
android:inputType="phone"
android:id="@+id/edtMobile"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp"
android:text="Send"
android:id="@+id/btnSend"
android:layout_marginTop="10dp"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp"
android:text="Add"
android:id="@+id/btnAdd"
android:layout_marginTop="10dp"/>
</LinearLayout>
step 2:- SendActivity.java
package com.sandhya.firebasedatabasesendandreceive.data;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.sandhya.firebasedatabasesendandreceive.R;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.UUID;
import de.hdodenhof.circleimageview.CircleImageView;
public class DataSendActivity extends AppCompatActivity {
EditText edtName,edtAge,edtMobile;
Button btnSend,btnAdd;
CircleImageView uploadImage;
static final int REQ_CODE = 100;
DatabaseReference dataRef;
StorageReference storageReference;
Bitmap bitmap;
Uri filepath;
String downloadUrl = "";
ArrayList<DataModel> models;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data_send);
edtAge = findViewById(R.id.edtAge);
edtName = findViewById(R.id.edtName);
edtMobile = findViewById(R.id.edtMobile);
btnSend = findViewById(R.id.btnSend);
uploadImage = findViewById(R.id.imgUploadImage);
dataRef = FirebaseDatabase.getInstance().getReference().child("Data");
storageReference = FirebaseStorage.getInstance().getReference().child("Data");
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
StorageReference reference = storageReference.child(System.currentTimeMillis()+"."+MimeTypeMap.getSingleton().getExtensionFromMimeType(getContentResolver().getType(filepath)));
reference.putFile(filepath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String name = edtName.getText().toString();
String age = edtAge.getText().toString();
String mobile = edtMobile.getText().toString();
if (name.isEmpty()||age.isEmpty()||mobile.isEmpty()){
Toast.makeText(DataSendActivity.this, "fill all detail", Toast.LENGTH_SHORT).show();
}else {
HashMap<String, Object> map = new HashMap<>();
map.put("name",name);
map.put("age",age);
map.put("mobile",mobile);
map.put("image",uri.toString());
dataRef.child(name).setValue(map).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(DataSendActivity.this, "send", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(),DataReceiveActivity.class));
}else {
Toast.makeText(DataSendActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
}
});
}
});
uploadImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent,REQ_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK){
if (requestCode==REQ_CODE){
filepath = data.getData();
uploadImage.setImageURI(filepath);
}
}
}
}
receive data-
step 3: activity_receive.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".data.DataReceiveActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dataRecycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"/>
</RelativeLayout>
step 4:- ReceiveActivty.java
package com.sandhya.firebasedatabasesendandreceive.data;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.annotation.SuppressLint;
import android.os.Bundle;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.sandhya.firebasedatabasesendandreceive.R;
import java.util.ArrayList;
import java.util.Collections;
public class DataReceiveActivity extends AppCompatActivity {
RecyclerView dataRecycler;
ArrayList<DataModel> models;
DataAdapter adapter;
DatabaseReference reference;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data_receive);
reference = FirebaseDatabase.getInstance().getReference().child("Data");
dataRecycler = findViewById(R.id.dataRecycler);
dataRecycler.setLayoutManager(new LinearLayoutManager(this));
models = new ArrayList<>();
reference.addValueEventListener(new ValueEventListener() {
@SuppressLint("NotifyDataSetChanged")
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
models.clear();
for (DataSnapshot dataSnapshot : snapshot.getChildren()){
DataModel model = dataSnapshot.getValue(DataModel.class);
models.add(model);
}
Collections.shuffle(models);
adapter = new DataAdapter(DataReceiveActivity.this,models);
dataRecycler.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
step 4:- DataModel.java
package com.sandhya.firebasedatabasesendandreceive.data;
public class DataModel {
String name,age,mobile,Name,Mobile,Age,image;
public DataModel() {
}
public DataModel(String name, String age, String mobile, String name1, String mobile1, String age1, String image) {
this.name = name;
this.age = age;
this.mobile = mobile;
Name = name1;
Mobile = mobile1;
Age = age1;
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
step 4:- data_item.java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
app:cardCornerRadius="10dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="4dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_margin="10dp"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"
android:id="@+id/dataImage"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/edt_bg"
android:padding="15dp"
android:id="@+id/txtName"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edt_bg"
android:padding="15dp"
android:layout_marginTop="10dp"
android:id="@+id/txtAge"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edt_bg"
android:padding="15dp"
android:layout_marginTop="10dp"
android:id="@+id/txtMobile"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
step 5:- DataAdapter.java
package com.sandhya.firebasedatabasesendandreceive.data;
import android.content.Context;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.sandhya.firebasedatabasesendandreceive.R;
import java.util.ArrayList;
import de.hdodenhof.circleimageview.CircleImageView;
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
Context context;
ArrayList<DataModel> models;
public DataAdapter(Context context, ArrayList<DataModel> models) {
this.context = context;
this.models = models;
}
@NonNull
@Override
public DataAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.data_item,parent,false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull DataAdapter.ViewHolder holder, int position) {
holder.txtName.setText(models.get(position).getName());
holder.txtAge.setText(models.get(position).getAge());
holder.txtMobile.setText(models.get(position).getMobile());
// image fetch
Glide.with(context).load(models.get(position).getImage()).into(holder.dataImage);
}
@Override
public int getItemCount() {
return models.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView txtName,txtAge,txtMobile;
CircleImageView dataImage;
public ViewHolder(@NonNull View itemView) {
super(itemView);
txtName = itemView.findViewById(R.id.txtName);
txtAge = itemView.findViewById(R.id.txtAge);
txtMobile = itemView.findViewById(R.id.txtMobile);
dataImage = itemView.findViewById(R.id.dataImage);
}
}
}
Output:-
Post a Comment