Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code refactored, migrated to AndroidX and few optimizations applied. #3

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
25 changes: 13 additions & 12 deletions app/build.gradle
@@ -1,15 +1,15 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 28
compileSdkVersion 29
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.example.sisay.shopsimulator"
minSdkVersion 17
targetSdkVersion 28
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
vectorDrawables.useSupportLibrary = true
manifestPlaceholders = [
yenepayReturnScheme: "com.yenepay.example.shopsimulator"
Expand All @@ -25,16 +25,17 @@ android {

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
api project(':yeneSDK')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-vector-drawable:28.0.0'
implementation 'de.hdodenhof:circleimageview:2.1.0'
testImplementation 'junit:junit:4.12'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
implementation 'androidx.preference:preference:1.1.1'
testImplementation 'junit:junit:4.13'
}
@@ -1,8 +1,8 @@
package com.example.sisay.shopsimulator;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down
Expand Up @@ -3,11 +3,12 @@
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;

import androidx.annotation.LayoutRes;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
Expand Down
71 changes: 37 additions & 34 deletions app/src/main/java/com/example/sisay/shopsimulator/CartActivity.java
Expand Up @@ -2,31 +2,28 @@

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.example.sisay.shopsimulator.store.StoreManager;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.yenepaySDK.model.OrderedItem;

import java.util.List;
import java.util.Locale;

public class CartActivity extends ShopBaseActivity {

private RecyclerView mListView;
private OrderedItemsRecyclerAdapter mListAdapter;
private TextView mCoutText;
private TextView mCountText;
private TextView mTotalText;
private View mBtnClear;
private View mBtnCheckout;
Expand All @@ -51,12 +48,12 @@ public void onClick(View view) {
});

mEmptyView = findViewById(R.id.empty_view);
mListView = findViewById(R.id.list_cart);
RecyclerView mListView = findViewById(R.id.list_cart);
mListView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
mListAdapter = new OrderedItemsRecyclerAdapter(this, mCartUpdateListner);
mListAdapter = new OrderedItemsRecyclerAdapter(this, mCartUpdateListener);

mListView.setAdapter(mListAdapter);
mCoutText = findViewById(R.id.txt_cart_items_count);
mCountText = findViewById(R.id.txt_cart_items_count);
mTotalText = findViewById(R.id.txt_cart_total);

mBtnClear = findViewById(R.id.btn_clear);
Expand Down Expand Up @@ -90,10 +87,15 @@ public void onClick(View view) {
updateCartTotals();
}
});
}

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return super.onSupportNavigateUp();
}
private final OnCartUpdatedActionListner mCartUpdateListner = new OnCartUpdatedActionListner() {

private final OnCartUpdatedActionListener mCartUpdateListener = new OnCartUpdatedActionListener() {
@Override
public void onCartUpdated() {
updateCartTotals();
Expand All @@ -102,24 +104,24 @@ public void onCartUpdated() {

private void updateCartTotals() {
mTotalText.setText(Utils.getAmountString(StoreManager.getCartTotal()));
mCoutText.setText(StoreManager.getCartItemsCount() + " - items");
mCountText.setText(String.format(Locale.ENGLISH, "%d - items", StoreManager.getCartItemsCount()));

int visibility = mListAdapter.getItemCount() > 0? View.VISIBLE: View.GONE;
int visibility = mListAdapter.getItemCount() > 0 ? View.VISIBLE : View.GONE;
mBtnClear.setVisibility(visibility);
mBtnCheckout.setVisibility(visibility);
mCheckoutWeb.setVisibility(visibility);
mEmptyView.setVisibility(mListAdapter.getItemCount() == 0 ? View.VISIBLE : View.GONE);
}

public static class OrderedItemsRecyclerAdapter extends RecyclerView.Adapter<OrderedItemViewHolder>{
private final OnCartUpdatedActionListner mLitner;
public static class OrderedItemsRecyclerAdapter extends RecyclerView.Adapter<OrderedItemViewHolder> {
private final OnCartUpdatedActionListener mListener;
private List<OrderedItem> mOrderedItems;
private Context mContext;

public OrderedItemsRecyclerAdapter(Context context, OnCartUpdatedActionListner listner) {
public OrderedItemsRecyclerAdapter(Context context, OnCartUpdatedActionListener listener) {
this.mContext = context;
this.mOrderedItems = StoreManager.ORDERS;
this.mLitner = listner;
this.mListener = listener;
}

@NonNull
Expand All @@ -132,20 +134,20 @@ public OrderedItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, in
@Override
public void onBindViewHolder(@NonNull OrderedItemViewHolder viewHolder, int i) {
final OrderedItem item = getItem(i);
if(StoreManager.ITEM_MAP.containsKey(item.getItemId())){
if (StoreManager.ITEM_MAP.containsKey(item.getItemId())) {
StoreManager.DummyItem storeItem = StoreManager.ITEM_MAP.get(item.getItemId());
viewHolder.itemImage.setImageResource(storeItem.imageResId);
}
viewHolder.itemName.setText(item.getItemName());
viewHolder.quantity.setText(String.format("Quantity - %d", item.getQuantity()));
viewHolder.quantity.setText(String.format(Locale.ENGLISH, "Quantity - %d", item.getQuantity()));
viewHolder.total.setText(Utils.getAmountString(item.getItemTotalPrice()));
viewHolder.addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
StoreManager.addToCart(item.getItemId(), 1);
notifyDataSetChanged();
if(mLitner != null){
mLitner.onCartUpdated();
if (mListener != null) {
mListener.onCartUpdated();
}
}
});
Expand All @@ -155,35 +157,36 @@ public void onClick(View view) {
public void onClick(View view) {
StoreManager.removeFromCart(item.getItemId(), 1);
notifyDataSetChanged();
if(mLitner != null){
mLitner.onCartUpdated();
if (mListener != null) {
mListener.onCartUpdated();
}
}
});
}

public OrderedItem getItem(int position){
if (mOrderedItems == null){
public OrderedItem getItem(int position) {
if (mOrderedItems == null) {
return null;
}
return mOrderedItems.get(position);
}

@Override
public int getItemCount() {
return mOrderedItems != null? mOrderedItems.size(): 0;
return mOrderedItems != null ? mOrderedItems.size() : 0;
}

}

public static class OrderedItemViewHolder extends RecyclerView.ViewHolder{
public static class OrderedItemViewHolder extends RecyclerView.ViewHolder {

private ImageView itemImage;
private TextView itemName;
private TextView quantity;
private TextView total;
private FloatingActionButton addButton;
private FloatingActionButton removeButton;

public OrderedItemViewHolder(@NonNull View itemView) {
super(itemView);
itemImage = itemView.findViewById(R.id.item_image);
Expand All @@ -195,7 +198,7 @@ public OrderedItemViewHolder(@NonNull View itemView) {
}
}

public interface OnCartUpdatedActionListner{
public interface OnCartUpdatedActionListener {
void onCartUpdated();
}

Expand Down
@@ -1,29 +1,19 @@
package com.example.sisay.shopsimulator;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.ActionBar;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.core.content.ContextCompat;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.ActionBar;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.example.sisay.shopsimulator.store.StoreManager;
import com.yenepaySDK.PaymentOrderManager;
import com.yenepaySDK.PaymentResponse;
import com.yenepaySDK.YenePayUriParser;
import com.yenepaySDK.YenepayCheckOutIntentAction;
import com.yenepaySDK.model.OrderedItem;

import java.util.UUID;


/**
Expand Down