Last active
August 7, 2020 06:48
-
-
Save crazy-diya/e8181eeff7a41f364dc085d21a652ee1 to your computer and use it in GitHub Desktop.
Data Store and Retrive on FirebaseDatabase in Android Studio Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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