Skip to content

Instantly share code, notes, and snippets.

@crazy-diya
Last active August 7, 2020 06:48
Show Gist options
  • Save crazy-diya/e8181eeff7a41f364dc085d21a652ee1 to your computer and use it in GitHub Desktop.
Save crazy-diya/e8181eeff7a41f364dc085d21a652ee1 to your computer and use it in GitHub Desktop.
Data Store and Retrive on FirebaseDatabase in Android Studio Java
package com.example.firebaseproject2;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.MimeTypeMap;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
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.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.StorageTask;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity{
ImageView imageView;
EditText title,rating,category,date;
Button save,show;
ProgressBar progressBar;
DatabaseReference databaseReference;
StorageReference storageReference;
Uri imguri;
StorageTask storageTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.dgfhfhf);
title = (EditText) findViewById(R.id.editTextTextPersonName);
rating = (EditText) findViewById(R.id.editTextTextPersonName2);
category = (EditText) findViewById(R.id.editTextTextPersonName3);
date = (EditText) findViewById(R.id.editTextTextPersonName4);
title.setText(null);
rating.setText(null);
category.setText(null);
date.setText(null);
save = (Button) findViewById(R.id.save);
show = (Button) findViewById(R.id.show);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.INVISIBLE);
databaseReference = FirebaseDatabase.getInstance().getReference("Movies");
storageReference = FirebaseStorage.getInstance().getReference("Movies");
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
imageLoad();
}catch (Exception e){
Toast.makeText(MainActivity.this, "Error is : "+e, Toast.LENGTH_SHORT).show();
}
}
});
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (storageTask != null && storageTask.isInProgress()){
Toast.makeText(MainActivity.this, "It is Progressing!", Toast.LENGTH_SHORT).show();
}else{
dataUploader();
}
}catch (Exception e){
Toast.makeText(MainActivity.this, "Error is : "+e, Toast.LENGTH_SHORT).show();
}
}
});
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,SecondActivity.class));
}
});
}
private String getExtention(Uri imguri) {
ContentResolver contentResolver = getContentResolver(); //using for get the extention in image.
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(imguri));
}
private void dataUploader() {
try {
progressBar.setVisibility(View.VISIBLE);
final String tit = title.getText().toString();
final String rati = rating.getText().toString();
final String cat = category.getText().toString();
final String dt = date.getText().toString();
if (!tit.isEmpty() && !rati.isEmpty() && !cat.isEmpty() && !dt.isEmpty()){
storageTask = storageReference.child(System.currentTimeMillis()+"."+getExtention(imguri)).putFile(imguri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isSuccessful());
Uri downloadurl = uriTask.getResult();
Movies movies = new Movies(tit,rati,cat,dt,downloadurl.toString());
String key = databaseReference.push().getKey().toString();
databaseReference.child(key).setValue(movies);
progressBar.setVisibility(View.INVISIBLE);
title.setText(null);
rating.setText(null);
category.setText(null);
date.setText(null);
imageView.setImageResource(R.drawable.dgfhfhf);
Toast.makeText(MainActivity.this, "Successfully Uploaded Data Into Database!", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressBar.setVisibility(View.INVISIBLE);
Toast.makeText(MainActivity.this, "Faild to Uploaded Data", Toast.LENGTH_SHORT).show();
}
});
}else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.error);
builder.setTitle("Error!");
builder.setMessage("Please Fill the all Fields and select a image click gallery icon!");
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
progressBar.setVisibility(View.INVISIBLE);
}
});
builder.show();
}
}catch (Exception e){
Toast.makeText(this, "Error is : "+e, Toast.LENGTH_SHORT).show();
}
}
/**Start Access the mobile file location for get the image and set the image into image view*/
private void imageLoad() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null){
imguri =data.getData();
Picasso.get().load(imguri).into(imageView);
//imageView.setImageURI(imguri);
}
}
/**End Access the mobile file location for get the image and set the image into image view*/
}
class Movies{
String title,rating,category,date,imgurl;
public Movies() {
}
public Movies(String title, String rating, String category, String date, String imgurl) {
this.title = title;
this.rating = rating;
this.category = category;
this.date = date;
this.imgurl = imgurl;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getImgurl() {
return imgurl;
}
public void setImgurl(String imgurl) {
this.imgurl = imgurl;
}
}
package com.example.firebaseproject2;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
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.google.firebase.storage.FirebaseStorage;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
public class SecondActivity extends AppCompatActivity {
GridView gridView;
ArrayList<Movies> list;
CustomAdapter customAdapter;
DatabaseReference databaseReference;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
gridView = (GridView) findViewById(R.id.gridView);
list = new ArrayList<>();
customAdapter = new CustomAdapter(this,list);
gridView.setAdapter(customAdapter);
databaseReference = FirebaseDatabase.getInstance().getReference("Movies");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
Movies movies = dataSnapshot1.getValue(Movies.class);
list.add(movies);
}
customAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
class CustomAdapter extends BaseAdapter {
Context context;
ArrayList<Movies> list;
LayoutInflater layoutInflater;
public CustomAdapter(Context context, ArrayList<Movies> list) {
this.context = context;
this.list = list;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = layoutInflater.inflate(R.layout.item_collection,null);
ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView5);
TextView title = (TextView) convertView.findViewById(R.id.textView);
TextView rating = (TextView) convertView.findViewById(R.id.textView2);
TextView category = (TextView) convertView.findViewById(R.id.textView3);
TextView date = (TextView) convertView.findViewById(R.id.textView4);
Button button = (Button) convertView.findViewById(R.id.button2);
Movies currentMovie = list.get(position);
Picasso.get().load(currentMovie.getImgurl()).into(imageView);
title.setText(currentMovie.getTitle());
rating.setText(currentMovie.getRating());
category.setText(currentMovie.getCategory());
date.setText(currentMovie.getDate());
return convertView;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment