I'm very new in developing applications, I'm doing this app where I have to save some data in the cloud, I'm using firebaseui with recyclerview for it. I could upload the data but when loading the list my app is closed. Here I leave the code:
package com.code.plantas;
import android.app.Activity;
import android.content.Entity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.support.v4.content.ContextCompat;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.database.DatabaseReference;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.code.plantas.R;
public class NewPlant extends AppCompatActivity{
private ImageView imagen;
private EditText nomb,nomc,fam,hoj,tall,flo;
private String key;
private Button foto,guardar;
private static final FirebaseDatabase DATABASE= FirebaseDatabase.getInstance();
private static final FirebaseStorage STORAGE =FirebaseStorage.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_plant);
nomb=(EditText) findViewById(R.id.nom);
nomc=(EditText) findViewById(R.id.nomc);
fam=(EditText) findViewById(R.id.familia);
hoj=(EditText) findViewById(R.id.hojas);
tall=(EditText) findViewById(R.id.tallo);
flo=(EditText) findViewById(R.id.flores);
guardar=(Button)findViewById(R.id.guardar) ;
foto=(Button)findViewById(R.id.btnFoto);
guardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Plant p = new Plant(nomb.getText().toString(),nomc.getText().toString(),fam.getText().toString(),hoj.getText().toString(),tall.getText().toString(),flo.getText().toString());
DATABASE.getReference().push().setValue(p);
//CUANDO SE GUARDE
nomb.setText("");
nomc.setText("");
fam.setText("");
hoj.setText("");
tall.setText("");
flo.setText("");
Toast.makeText(NewPlant.this,"Done",Toast.LENGTH_SHORT).show();
}
});
}
}
My data model:
public class Plant {
private String name;
private String cname;
private String familia;
private String hojas;
private String tallo;
private String flores;
public Plant() {
}
public Plant(String name, String cname, String familia, String hojas, String tallo, String flores) {
this.name = name;
this.cname = cname;
this.familia = familia;
this.hojas = hojas;
this.tallo = tallo;
this.flores = flores;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getFamilia() {
return familia;
}
public void setFamilia(String familia) {
this.familia = familia;
}
public String getHojas() {
return hojas;
}
public void setHojas(String hojas) {
this.hojas = hojas;
}
public String getTallo() {
return tallo;
}
public void setTallo(String tallo) {
this.tallo = tallo;
}
public String getFlores() {
return flores;
}
public void setFlores(String flores) {
this.flores = flores;
}
}
My Adapter:
package com.code.plantas;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class PlantList extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.plant_list);
RecyclerView recyclerView= (RecyclerView)findViewById(R.id.rv);
recyclerView.setLayoutManager(new LinearLayoutManager(PlantList.this));
DatabaseReference ref= FirebaseDatabase.getInstance().getReference();
FirebaseRecyclerAdapter<Plant,PlantHolder>adapter=new FirebaseRecyclerAdapter<Plant, PlantHolder>(Plant.class,R.layout.plant_list,PlantHolder.class,ref) {
@Override
protected void populateViewHolder(PlantHolder viewHolder, Plant model, int position) {
viewHolder.setName(model.getName());
}
};
recyclerView.setAdapter(adapter);
}
}
Holder:
package com.code.plantas;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class PlantHolder extends RecyclerView.ViewHolder{
public final TextView nombre;
public PlantHolder(View itemView){
super (itemView);
nombre=(TextView) itemView.findViewById(R.id.nname);
}
public void setName(String name) {
nombre.setText(name);
}
}
The Manifest:
The Layout of the Recyclerview: The code for each row: The activity where the data is written:
<ImageView
android:layout_width="200dp"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/nom"
android:layout_marginTop="19dp"
android:layout_below="@+id/imageView"
android:layout_alignParentStart="true"
android:hint="Nombre" />
<Button
android:text="@string/foto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnFoto"
android:layout_above="@+id/guardar"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_below="@+id/nomc"
android:layout_alignParentStart="true"
android:id="@+id/familia"
android:hint="@string/familia" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_below="@+id/hojas"
android:layout_alignParentStart="true"
android:id="@+id/tallo"
android:hint="Tallo" />
<Button
android:text="@string/guardar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/guardar"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/hojas"
android:hint="Hojas"
android:layout_below="@+id/familia"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/flores"
android:layout_below="@+id/tallo"
android:layout_alignParentStart="true"
android:hint="Flores" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_marginTop="31dp"
android:id="@+id/nomc"
android:hint="Nombre Cientifico"
android:layout_alignTop="@+id/nom"
android:layout_alignParentStart="true" />
</RelativeLayout>