diff --git a/.idea/misc.xml b/.idea/misc.xml index 5d19981..ba7052b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,8 +1,5 @@ - - - - - - - - - - - - - - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 732fa54..914118b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,6 +19,8 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/danielvargas/inventario_android/MainActivity.java b/app/src/main/java/com/danielvargas/inventario_android/MainActivity.java index 04b7aad..61682f5 100644 --- a/app/src/main/java/com/danielvargas/inventario_android/MainActivity.java +++ b/app/src/main/java/com/danielvargas/inventario_android/MainActivity.java @@ -1,38 +1,60 @@ package com.danielvargas.inventario_android; import android.content.Context; +import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.os.Parcelable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.util.Log; +import android.view.View; import android.widget.Toast; +import com.danielvargas.inventario_android.adapters.ProductosAdapter; +import com.danielvargas.inventario_android.model.Productos; +import com.danielvargas.inventario_android.service.AlertDialogFragment; +import com.danielvargas.inventario_android.service.ProductosActivity; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; +import java.util.Arrays; +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; +//TODO: Agregar mensaje que no hay data si no se puede conectar public class MainActivity extends AppCompatActivity { public static final String TAG = MainActivity.class.getSimpleName(); + public static final String LISTA_PRODUCTOS = "LISTA_PRODUCTOS"; private Productos[] mProductos; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + ButterKnife.bind(this); + + getData(); + + } private void getData() { - String dataUrl = "http://localhost:8090/api/productos"; + String dataUrl = "https://guarded-shelf-37041.herokuapp.com/api/productos"; if (isNetworkAvailable()) { OkHttpClient client = new OkHttpClient(); @@ -65,7 +87,7 @@ public void run() { runOnUiThread(new Runnable() { @Override public void run() { -// updateDisplay(); + updateDisplay(); } }); } else { @@ -78,7 +100,6 @@ public void run() { }); } else { - //TODO intentar mandar este mensaje por un dialogo en vez de un toast Toast.makeText(this, R.string.network_unavilable_message, Toast.LENGTH_LONG).show(); } @@ -112,6 +133,7 @@ private Productos[] getJsonData(String jsonData) throws JSONException { producto.setPrecio(jsonProducto.getDouble("precio")); producto.setPrecioEntrada(jsonProducto.getDouble("precioEntrada")); producto.setDescripcion(jsonProducto.getString("descripcion")); + producto.setVendidos(jsonProducto.getInt("cantidadVendido")); productos[i] = producto; } @@ -120,6 +142,12 @@ private Productos[] getJsonData(String jsonData) throws JSONException { } public void updateDisplay() { + } + @OnClick(R.id.startButton) + public void lista(View view) { + Intent intent = new Intent(this, ProductosActivity.class); + intent.putExtra(LISTA_PRODUCTOS, mProductos); + startActivity(intent); } } diff --git a/app/src/main/java/com/danielvargas/inventario_android/Productos.java b/app/src/main/java/com/danielvargas/inventario_android/Productos.java deleted file mode 100644 index 4c5a1b6..0000000 --- a/app/src/main/java/com/danielvargas/inventario_android/Productos.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.danielvargas.inventario_android; - -/** - * Created by Daniel on 5/11/2017 - */ - -public class Productos { - int id; - String nombre; - double precio; - double precioEntrada; - String descripcion; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getNombre() { - return nombre; - } - - public void setNombre(String nombre) { - this.nombre = nombre; - } - - public double getPrecio() { - return precio; - } - - public void setPrecio(double precio) { - this.precio = precio; - } - - public double getPrecioEntrada() { - return precioEntrada; - } - - public void setPrecioEntrada(double precioEntrada) { - this.precioEntrada = precioEntrada; - } - - public String getDescripcion() { - return descripcion; - } - - public void setDescripcion(String descripcion) { - this.descripcion = descripcion; - } -} diff --git a/app/src/main/java/com/danielvargas/inventario_android/adapters/ProductosAdapter.java b/app/src/main/java/com/danielvargas/inventario_android/adapters/ProductosAdapter.java new file mode 100644 index 0000000..0fc070f --- /dev/null +++ b/app/src/main/java/com/danielvargas/inventario_android/adapters/ProductosAdapter.java @@ -0,0 +1,65 @@ +package com.danielvargas.inventario_android.adapters; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.danielvargas.inventario_android.R; +import com.danielvargas.inventario_android.model.Productos; + +/** + * Created by Daniel on 18/11/2017 + */ + +public class ProductosAdapter extends RecyclerView.Adapter { + + private Productos[] mProductos; + + public ProductosAdapter(Productos[] productos) { + mProductos = productos; + } + + @Override + public ProductosViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.productos_list_individual, parent, false); + ProductosViewHolder viewHolder = new ProductosViewHolder(view); + return viewHolder; + } + + @Override + public void onBindViewHolder(ProductosViewHolder holder, int position) { + holder.bindProductos(mProductos[position]); + } + + @Override + public int getItemCount() { + return mProductos.length; + } + + public class ProductosViewHolder extends RecyclerView.ViewHolder { + + public TextView mNombre; + public TextView mPrecio; + public TextView mPrecioE; + public TextView mCantidad; + + public ProductosViewHolder(View itemView) { + super(itemView); + mNombre = (TextView) itemView.findViewById(R.id.nombre); + mPrecio = (TextView) itemView.findViewById(R.id.precio); + mPrecioE = (TextView) itemView.findViewById(R.id.precioE); + mCantidad = (TextView) itemView.findViewById(R.id.cantidad); + } + + public void bindProductos(Productos productos) { + mNombre.setText(productos.getNombre()); + mPrecio.setText(productos.getPrecio() + ""); + mPrecioE.setText(productos.getPrecioEntrada() + ""); + mCantidad.setText(productos.getVendidos()+""); + } + } + +} diff --git a/app/src/main/java/com/danielvargas/inventario_android/model/Productos.java b/app/src/main/java/com/danielvargas/inventario_android/model/Productos.java new file mode 100644 index 0000000..0970874 --- /dev/null +++ b/app/src/main/java/com/danielvargas/inventario_android/model/Productos.java @@ -0,0 +1,106 @@ +package com.danielvargas.inventario_android.model; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Created by Daniel on 5/11/2017 + */ + +public class Productos implements Parcelable { + private int id; + private String mNombre; + private double mPrecio; + private double mPrecioEntrada; + private String mDescripcion; + private int mVendidos; + + + public Productos() { + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getNombre() { + return mNombre; + } + + public void setNombre(String nombre) { + this.mNombre = nombre; + } + + public double getPrecio() { + return mPrecio; + } + + public void setPrecio(double precio) { + this.mPrecio = precio; + } + + public double getPrecioEntrada() { + return mPrecioEntrada; + } + + public void setPrecioEntrada(double precioEntrada) { + this.mPrecioEntrada = precioEntrada; + } + + public String getDescripcion() { + return mDescripcion; + } + + public void setDescripcion(String descripcion) { + this.mDescripcion = descripcion; + } + + public int getVendidos() { + return mVendidos; + } + + public void setVendidos(int vendidos) { + this.mVendidos = vendidos; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(id); + dest.writeString(mNombre); + dest.writeDouble(mPrecio); + dest.writeDouble(mPrecioEntrada); + dest.writeString(mDescripcion); + dest.writeInt(mVendidos); + } + + private Productos(Parcel in) { + id = in.readInt(); + mNombre = in.readString(); + mPrecio = in.readDouble(); + mPrecioEntrada = in.readDouble(); + mDescripcion = in.readString(); + mVendidos = in.readInt(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public Productos createFromParcel(Parcel in) { + return new Productos(in); + } + + @Override + public Productos[] newArray(int size) { + return new Productos[size]; + } + }; + +} diff --git a/app/src/main/java/com/danielvargas/inventario_android/AlertDialogFragment.java b/app/src/main/java/com/danielvargas/inventario_android/service/AlertDialogFragment.java similarity index 93% rename from app/src/main/java/com/danielvargas/inventario_android/AlertDialogFragment.java rename to app/src/main/java/com/danielvargas/inventario_android/service/AlertDialogFragment.java index 8ba00e2..624780b 100644 --- a/app/src/main/java/com/danielvargas/inventario_android/AlertDialogFragment.java +++ b/app/src/main/java/com/danielvargas/inventario_android/service/AlertDialogFragment.java @@ -1,25 +1,25 @@ -package com.danielvargas.inventario_android; - -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.content.Context; -import android.os.Bundle; - -import com.danielvargas.inventario_android.R; - -public class AlertDialogFragment extends DialogFragment { - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - - Context context = getActivity(); //esto es para saber de que actividad estamos hablando - AlertDialog.Builder builder = new AlertDialog.Builder(context) - .setTitle(R.string.error_titile) //este va a ser el titulo del mensaje. Todos estos valores de string los pase a string resourses (como debe ser) - .setMessage(R.string.error_message)// esta va a ser el mensaje - .setPositiveButton(R.string.error_ok_button_text, null); // este es el boton, ponemos null como lo que hace para que al darle click simplemente se cierre - AlertDialog dialog = builder.create(); - return dialog; - } -} - +package com.danielvargas.inventario_android.service; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.Context; +import android.os.Bundle; + +import com.danielvargas.inventario_android.R; + +public class AlertDialogFragment extends DialogFragment { + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + + Context context = getActivity(); //esto es para saber de que actividad estamos hablando + AlertDialog.Builder builder = new AlertDialog.Builder(context) + .setTitle(R.string.error_titile) //este va a ser el titulo del mensaje. Todos estos valores de string los pase a string resourses (como debe ser) + .setMessage(R.string.error_message)// esta va a ser el mensaje + .setPositiveButton(R.string.error_ok_button_text, null); // este es el boton, ponemos null como lo que hace para que al darle click simplemente se cierre + AlertDialog dialog = builder.create(); + return dialog; + } +} + diff --git a/app/src/main/java/com/danielvargas/inventario_android/service/ProductosActivity.java b/app/src/main/java/com/danielvargas/inventario_android/service/ProductosActivity.java new file mode 100644 index 0000000..9bb8c7b --- /dev/null +++ b/app/src/main/java/com/danielvargas/inventario_android/service/ProductosActivity.java @@ -0,0 +1,50 @@ +package com.danielvargas.inventario_android.service; + +import android.content.Intent; +import android.os.Parcelable; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; + +import com.danielvargas.inventario_android.MainActivity; +import com.danielvargas.inventario_android.R; +import com.danielvargas.inventario_android.adapters.ProductosAdapter; +import com.danielvargas.inventario_android.model.Productos; + +import java.util.Arrays; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class ProductosActivity extends AppCompatActivity { + + private Productos[] mProductos; + + @BindView(R.id.recyclerView) + RecyclerView mRecyclerView; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.productos_list); + ButterKnife.bind(this); + + + Intent intent = getIntent(); +// Parcelable[] parcelables = intent.getParcelableArrayExtra(MainActivity.LISTA_PRODUCTOS); + Parcelable[] parcelables = intent.getParcelableArrayExtra(MainActivity.LISTA_PRODUCTOS); + mProductos = Arrays.copyOf(parcelables, parcelables.length, Productos[].class); + + ProductosAdapter adapter = new ProductosAdapter(mProductos); + mRecyclerView.setAdapter(adapter); + + RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); + mRecyclerView.setLayoutManager(layoutManager); + + //Esto solo se debe poner si nuestros datos van a tener un tamaƱo fijo +// mRecyclerView.setHasFixedSize(true); + + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 812eff2..ab4d4a6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,65 +1,13 @@ - - - + +