Commit d72aaebb authored by Muhammad Suryono's avatar Muhammad Suryono

Fix Product

parent 9859df03
......@@ -4,7 +4,9 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
......@@ -22,6 +24,8 @@ public class LoginActivity extends AppCompatActivity {
TextInputEditText username, password;
MaterialButton btnLogin;
MainViewModels mainViewModels;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -32,6 +36,7 @@ public class LoginActivity extends AppCompatActivity {
btnLogin = findViewById(R.id.btnLogin);
mainViewModels = ViewModelProviders.of(this).get(MainViewModels.class);
sharedPreferences = getSharedPreferences(SplashScreen.MY_SHARED_PREFERENCES, Context.MODE_PRIVATE);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
......@@ -52,7 +57,11 @@ public class LoginActivity extends AppCompatActivity {
Log.d("Status", usersModelsDataResponse.getMessageData());
if (!usersModelsDataResponse.getMessageData().equals("Login Failed")){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(SplashScreen.SESSION, true);
editor.commit();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
finish();
}
// ADD ELSE UNTUK LOGIN GAGAL
......
......@@ -19,6 +19,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.appbar.MaterialToolbar;
......@@ -110,8 +111,8 @@ public class MainActivity extends AppCompatActivity {
productModelsArrayList.addAll(productModels);
productAdapter.setProduct(MainActivity.this,productModelsArrayList );
binding.rvCategory.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false));
binding.rvCategory.setAdapter(categoryAdapter);
binding.rvProduct.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
binding.rvProduct.setAdapter(productAdapter);
}
......
package com.yono.messeripos;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
......@@ -12,6 +14,10 @@ import androidx.appcompat.app.AppCompatActivity;
public class SplashScreen extends AppCompatActivity {
ImageView img;
SharedPreferences sharedPreferences;
public static final String MY_SHARED_PREFERENCES = "my_shared_preferences";
public static final String SESSION = "session";
public static Boolean session;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -20,12 +26,18 @@ public class SplashScreen extends AppCompatActivity {
// Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom_in);
// img.startAnimation(animation);
sharedPreferences = getSharedPreferences(MY_SHARED_PREFERENCES, Context.MODE_PRIVATE);
session = sharedPreferences.getBoolean(SESSION, false);
new Handler(Looper.getMainLooper()).postDelayed(()->{
if (session){
startActivity(new Intent(SplashScreen.this, MainActivity.class));
finish();
}else{
startActivity(new Intent(SplashScreen.this, LoginActivity.class));
finish();
}
}, 3000);
}
}
......@@ -2,7 +2,6 @@ package com.yono.messeripos.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
......@@ -10,13 +9,12 @@ import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.yono.messeripos.R;
import com.yono.messeripos.databinding.ItemCategoryBinding;
import com.yono.messeripos.databinding.ItemListBinding;
import com.yono.messeripos.models.CategoryModels;
import com.yono.messeripos.models.ProductModels;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;
import java.util.List;
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder> {
private ArrayList<ProductModels> productModels;
......@@ -63,6 +61,18 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
public void bindData(ProductModels products) {
binding.setProducts(products);
DecimalFormat rupiah = (DecimalFormat) DecimalFormat.getCurrencyInstance();
DecimalFormatSymbols format = new DecimalFormatSymbols();
format.setCurrencySymbol("Rp. ");
format.setMonetaryDecimalSeparator(',');
format.setGroupingSeparator('.');
rupiah.setDecimalFormatSymbols(format);
binding.setPrice(rupiah.format(products.getPriceProduct()));
binding.setImage(products.getImageProduct());
}
}
}
......@@ -6,6 +6,7 @@ import retrofit2.converter.gson.GsonConverterFactory;
public class ApiHelper {
public static final String BASE_URL = "https://rest-api-meser.herokuapp.com/";
public static final String VERSI_API_1 = "api/v1/";
public static final String BASE_URL_IMAGE = "https://storage.googleapis.com/rest-api-meser.appspot.com/images/";
public static Retrofit request(String baseUrl){
Retrofit retrofit = new Retrofit.Builder()
......
package com.yono.messeripos.models;
import android.widget.ImageView;
import androidx.databinding.BindingAdapter;
import com.bumptech.glide.Glide;
import com.google.gson.annotations.SerializedName;
import com.yono.messeripos.R;
import com.yono.messeripos.api.ApiHelper;
public class ProductModels<T> {
@SerializedName("id")
......@@ -15,6 +22,9 @@ public class ProductModels<T> {
@SerializedName("stock")
private int stockProduct;
@SerializedName("image")
private String imageProduct;
@SerializedName("category")
private T categoryProduct;
......@@ -57,4 +67,21 @@ public class ProductModels<T> {
public void setCategoryProduct(T categoryProduct) {
this.categoryProduct = categoryProduct;
}
public String getImageProduct() {
return imageProduct;
}
public void setImageProduct(String imageProduct) {
this.imageProduct = imageProduct;
}
@BindingAdapter("url")
public static void setImage(ImageView view, String url){
if (ApiHelper.BASE_URL_IMAGE+url == null){
view.setImageResource(R.drawable.ic_meser);
}else{
Glide.with(view).load(ApiHelper.BASE_URL_IMAGE+url).into(view);
}
}
}
<vector android:height="24dp" android:tint="#FF4A50"
<vector android:height="24dp" android:tint="#FC151B"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
......
<vector android:height="24dp" android:tint="#34C25B"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
</vector>
......@@ -7,79 +7,98 @@
<variable
name="products"
type="com.yono.messeripos.models.ProductModels" />
<variable
name="price"
type="String" />
<variable
name="image"
type="String" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/cardview_default_radius"
android:padding="@dimen/cardview_default_elevation"
app:cardCornerRadius="@dimen/cardview_default_radius">
android:layout_height="match_parent"
app:cardElevation="0dp"
app:strokeWidth="1dp"
app:strokeColor="#3CB3B3B3"
app:cardCornerRadius="10dp">
<RelativeLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent">
<ImageView
android:id="@+id/ivMeser"
android:id="@+id/image_product"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
tools:src="@tools:sample/avatars" />
android:layout_height="200dp"
android:src="@mipmap/ic_launcher_round"
app:layout_constraintTop_toTopOf="parent"
app:url="@{image}"
android:scaleType="fitXY"/>
<ImageView
android:id="@+id/btnDelete"
android:layout_width="30dp"
android:layout_height="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@drawable/ic_baseline_delete_24"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvQuantity"
<ImageView
android:id="@+id/btnEdit"
android:layout_width="30dp"
android:layout_height="30dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/btnDelete"
android:src="@drawable/ic_baseline_edit_24"/>
<TextView
android:id="@+id/title_product"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/tvProduct"
android:layout_alignParentEnd="true"
android:background="#fff"
android:fontFamily="monospace"
android:padding="@dimen/material_emphasis_medium"
android:textColor="@android:color/white"
android:textSize="12sp"
app:layout_constraintTop_toBottomOf="@id/image_product"
app:layout_constraintStart_toStartOf="parent"
tools:text="@tools:sample/full_names"
android:textColor="@android:color/black"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:textSize="18sp"
android:lines="1"
android:textStyle="bold"
tools:text="10" />
android:text="@{products.productName}"
android:maxLength="25"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvProduct"
android:layout_width="match_parent"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ivMeser"
android:fontFamily="@font/roboto"
android:gravity="center"
android:padding="@dimen/material_emphasis_high_type"
android:textAllCaps="true"
android:textColor="@color/ic_launcher_background"
android:textSize="12sp"
android:textStyle="bold"
tools:text="@tools:sample/full_names" />
app:layout_constraintTop_toBottomOf="@id/title_product"
app:layout_constraintStart_toStartOf="parent"
tools:text="@tools:sample/full_names"
android:textColor="@android:color/black"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:textSize="18sp"
android:lines="1"
android:text="@{price}"
android:maxLength="25"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvPrice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tvProduct"
android:fontFamily="@font/roboto"
android:gravity="end"
android:paddingStart="@dimen/material_emphasis_medium"
android:paddingEnd="@dimen/material_emphasis_disabled"
android:textColor="@color/colorPrimary"
android:textSize="12sp" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvDescription"
<com.google.android.material.button.MaterialButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tvPrice"
android:fontFamily="@font/roboto"
android:padding="@dimen/material_emphasis_high_type"
android:textColor="@android:color/darker_gray"
android:textSize="12sp"
tools:text="@tools:sample/lorem" />
</RelativeLayout>
android:layout_height="35dp"
android:layout_gravity="bottom"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text="Add To Cart"/>
</com.google.android.material.card.MaterialCardView>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
</layout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment