Store data in firebase realtime database as a Table Form:
Step 1-we resistor user on fireBase :
Ragistration Activity :
public class RagistrationActivity extends AppCompatActivity {
private EditText emailTV, passwordTV,name,confirm_password,Contact_Number;
private Button regBtn;
private ProgressBar progressBar;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ragistration);
firebaseAuth = FirebaseAuth.getInstance();
firebaseFirestore = firebaseFirestore.getInstance();
if(LoginUtils.isLogin(RagistrationActivity.this)){
Intent intent=new Intent(RagistrationActivity.this,MainActivity.class);
startActivity(intent);
finish();
}else {
/* Intent intent=new Intent(loginActivity.this,RagistrationActivity.class);
startActivity(intent);*/
}
initializeUI();
regBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
registerNewUser();
}
});
}
private void registerNewUser() {
progressBar.setVisibility(View.VISIBLE);
String email, password,UserName,UserConfirm_password,UserContact_Number;
email = emailTV.getText().toString();
password = passwordTV.getText().toString();
UserName = name.getText().toString();
UserConfirm_password =confirm_password.getText().toString();
UserContact_Number =Contact_Number.getText().toString();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), "Please enter email...", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), "Please enter password!", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(UserName)) {
Toast.makeText(getApplicationContext(), "Please enter Name...", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(UserConfirm_password)) {
Toast.makeText(getApplicationContext(), "Please enter Confirm password!", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(UserContact_Number)) {
Toast.makeText(getApplicationContext(), "Please enter Contact Number!", Toast.LENGTH_LONG).show();
return;
}
firebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Map<String,Object> userdata = new HashMap<>();
userdata.put("fullname",name.getText().toString());
userdata.put("email",emailTV.getText().toString());
userdata.put("password",confirm_password.getText().toString());
userdata.put("contactnumber",Contact_Number.getText().toString());
firebaseFirestore.collection("USERS").document(firebaseAuth.getUid())
.set(userdata)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
CollectionReference userdatareference=firebaseFirestore.collection("USERS").document(firebaseAuth.getUid()).collection("USER_DATA");
/////MAPS
Map<String,Object> viewlistMap = new HashMap<>();
viewlistMap.put("view_size", (long) 0);
Map<String,Object> likeMap = new HashMap<>();
likeMap.put("like_size", (long) 0);
Map<String,Object> subMap = new HashMap<>();
subMap.put("sub_size", (long) 0);
/////MAPS
final List<String> documentNames = new ArrayList<>();
documentNames.add("VIEW");
documentNames.add("LIKE");
documentNames.add("SUB");
List<Map<String,Object>> documentFields = new ArrayList<>();
documentFields.add(viewlistMap);
documentFields.add(likeMap);
documentFields.add(subMap);
for(int x =0; x < documentNames.size(); x++){
final int finalX = x;
userdatareference.document(documentNames.get(x))
.set(documentFields.get(x)).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
if(finalX == documentNames.size() -1) {
//mainIntent();
}
}else {
String error = task.getException().getMessage();
Toast.makeText(RagistrationActivity.this, error, Toast.LENGTH_SHORT).show();
}
}
});
}
}else {
String error = task.getException().getMessage();
Toast.makeText(RagistrationActivity.this, error, Toast.LENGTH_SHORT).show();
}
}
});
Toast.makeText(getApplicationContext(), "Registration successful!", Toast.LENGTH_LONG).show();
SharedPreferenceUtils.getInstance(RagistrationActivity.this).putBoolean(AppConstants.IS_USER_LOGIN, true);
progressBar.setVisibility(View.GONE);
Intent intent = new Intent(RagistrationActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
else {
Toast.makeText(getApplicationContext(), "Invalid credentials", Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
}
}
});
}
private void initializeUI() {
emailTV = findViewById(R.id.email);
passwordTV = findViewById(R.id.password);
regBtn = findViewById(R.id.register);
progressBar = findViewById(R.id.progressBar);
name = findViewById(R.id.name);
confirm_password = findViewById(R.id.confirm_password);
Contact_Number = findViewById(R.id.Contact_Number);
}
}how to retrieve data from firebase realtime database in android :
In MyAccount Activity we take data frome firebase and set that data on views:
public class MyAccountActivity extends BaseActivity {
TextView name,email,Contact_Number;
private FirebaseFirestore db;
@Override
protected void initViews() {
name=findViewById(R.id.name);
email=findViewById(R.id.email);
Contact_Number=findViewById(R.id.Contact_Number);
db = FirebaseFirestore.getInstance();
db.collection("USERS").document(FirebaseAuth.getInstance().getCurrentUser().getUid())
.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
name.setText(documentSnapshot.getString("fullname"));
email.setText(documentSnapshot.getString("email"));
Contact_Number.setText(documentSnapshot.getString("contactnumber"));
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MyAccountActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void initContext() {
}
@Override
protected void initListners() {
}
@Override
protected boolean isActionBar() {
return true;
}
@Override
protected boolean isHomeButton() {
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_account);
}
@Override
public void onClick(View view) {
}
@Override
public void onAlertClicked(int alertType) {
}
}My Account Activity Xml Code:
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
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="wrap_content"
app:cardCornerRadius="8dp"
android:layout_margin="8dp"
tools:context=".Activity.MyAccountActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name "
app:boxStrokeColor="@color/colorPrimary"
app:boxStrokeWidthFocused="2dp"
app:endIconMode="clear_text"
app:endIconTint="@color/colorPrimary"
app:hintTextColor="@color/black"
app:startIconDrawable="@drawable/profile_iconn">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email-ID"
app:boxStrokeColor="@color/colorPrimary"
app:boxStrokeWidthFocused="2dp"
android:layout_marginTop="8dp"
app:endIconMode="clear_text"
app:endIconTint="@color/colorPrimary"
app:hintTextColor="@color/black"
app:startIconDrawable="@drawable/email">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Contact Number"
app:boxStrokeColor="@color/colorPrimary"
app:boxStrokeWidthFocused="2dp"
app:endIconMode="clear_text"
android:layout_marginTop="8dp"
app:endIconTint="@color/colorPrimary"
app:hintTextColor="@color/black"
app:startIconDrawable="@drawable/call_24">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/Contact_Number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>