├── .gitignore ├── .idea ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── preethzcodez │ │ └── ecommerceexample │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── preethzcodez │ │ │ └── ecommerceexample │ │ │ ├── MainActivity.java │ │ │ ├── SplashActivity.java │ │ │ ├── activities │ │ │ ├── MyOrders.java │ │ │ ├── ProductDetails.java │ │ │ └── ShoppingCart.java │ │ │ ├── adapters │ │ │ ├── CategoryListAdapter.java │ │ │ ├── FilterItemListAdapter.java │ │ │ ├── MyOrdersAdapter.java │ │ │ ├── ProductListAdapter.java │ │ │ ├── ShoppingCartListAdapter.java │ │ │ ├── SortItemListAdapter.java │ │ │ ├── SubcategoryGridAdapter.java │ │ │ └── WishlistAdapter.java │ │ │ ├── database │ │ │ ├── DB_Handler.java │ │ │ └── SessionManager.java │ │ │ ├── fragments │ │ │ ├── Account.java │ │ │ ├── BlankFragment.java │ │ │ ├── Categories.java │ │ │ ├── Products.java │ │ │ ├── SignIn.java │ │ │ ├── SignUp.java │ │ │ ├── Subcategories.java │ │ │ └── WishList.java │ │ │ ├── interfaces │ │ │ ├── FinishActivity.java │ │ │ ├── ShowBackButton.java │ │ │ └── ToolbarTitle.java │ │ │ ├── pojo │ │ │ ├── Cart.java │ │ │ ├── Category.java │ │ │ ├── Product.java │ │ │ ├── ProductRank.java │ │ │ ├── Ranking.java │ │ │ ├── ResponseJSON.java │ │ │ ├── Tax.java │ │ │ ├── User.java │ │ │ └── Variant.java │ │ │ ├── service │ │ │ └── SyncDBService.java │ │ │ ├── utils │ │ │ ├── Constants.java │ │ │ ├── ExpandableHeightGridView.java │ │ │ └── Util.java │ │ │ └── webservice │ │ │ ├── RetrofitBuilder.java │ │ │ └── RetrofitInterface.java │ └── res │ │ ├── anim │ │ ├── enter_from_left.xml │ │ ├── enter_from_right.xml │ │ ├── exit_to_left.xml │ │ └── exit_to_right.xml │ │ ├── drawable-hdpi │ │ ├── ic_account_grey600_24dp.png │ │ ├── ic_arrow_left.png │ │ ├── ic_arrow_left_white_24dp.png │ │ ├── ic_cart_outline_white_24dp.png │ │ ├── ic_check_white_24dp.png │ │ ├── ic_chevron_down_grey600_24dp.png │ │ ├── ic_chevron_right_grey600_24dp.png │ │ ├── ic_close_circle_outline_grey600_24dp.png │ │ ├── ic_close_grey600_24dp.png │ │ ├── ic_eye_off_grey600_24dp.png │ │ ├── ic_eye_white_24dp.png │ │ ├── ic_filter_white_24dp.png │ │ ├── ic_heart_grey.png │ │ ├── ic_heart_grey600_24dp.png │ │ ├── ic_home_grey600_24dp.png │ │ ├── ic_image_grey600_36dp.png │ │ ├── ic_minus_circle_outline_grey600_18dp.png │ │ ├── ic_plus_circle_outline_grey600_18dp.png │ │ ├── ic_sort_white_24dp.png │ │ └── ic_view_list_grey600_24dp.png │ │ ├── drawable-mdpi │ │ ├── ic_account_grey600_24dp.png │ │ ├── ic_arrow_left.png │ │ ├── ic_arrow_left_white_24dp.png │ │ ├── ic_cart_outline_white_24dp.png │ │ ├── ic_check_white_24dp.png │ │ ├── ic_chevron_down_grey600_24dp.png │ │ ├── ic_chevron_right_grey600_24dp.png │ │ ├── ic_close_circle_outline_grey600_24dp.png │ │ ├── ic_close_grey600_24dp.png │ │ ├── ic_eye_off_grey600_24dp.png │ │ ├── ic_eye_white_24dp.png │ │ ├── ic_filter_white_24dp.png │ │ ├── ic_heart_grey.png │ │ ├── ic_heart_grey600_24dp.png │ │ ├── ic_home_grey600_24dp.png │ │ ├── ic_image_grey600_36dp.png │ │ ├── ic_minus_circle_outline_grey600_18dp.png │ │ ├── ic_plus_circle_outline_grey600_18dp.png │ │ ├── ic_sort_white_24dp.png │ │ └── ic_view_list_grey600_24dp.png │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable-xhdpi │ │ ├── ic_account_grey600_24dp.png │ │ ├── ic_arrow_left.png │ │ ├── ic_arrow_left_white_24dp.png │ │ ├── ic_cart_outline_white_24dp.png │ │ ├── ic_check_white_24dp.png │ │ ├── ic_chevron_down_grey600_24dp.png │ │ ├── ic_chevron_right_grey600_24dp.png │ │ ├── ic_close_circle_outline_grey600_24dp.png │ │ ├── ic_close_grey600_24dp.png │ │ ├── ic_eye_off_grey600_24dp.png │ │ ├── ic_eye_white_24dp.png │ │ ├── ic_filter_white_24dp.png │ │ ├── ic_heart_grey.png │ │ ├── ic_heart_grey600_24dp.png │ │ ├── ic_home_grey600_24dp.png │ │ ├── ic_image_grey600_36dp.png │ │ ├── ic_minus_circle_outline_grey600_18dp.png │ │ ├── ic_plus_circle_outline_grey600_18dp.png │ │ ├── ic_sort_white_24dp.png │ │ └── ic_view_list_grey600_24dp.png │ │ ├── drawable-xxhdpi │ │ ├── ic_account_grey600_24dp.png │ │ ├── ic_arrow_left.png │ │ ├── ic_arrow_left_white_24dp.png │ │ ├── ic_cart_outline_white_24dp.png │ │ ├── ic_check_white_24dp.png │ │ ├── ic_chevron_down_grey600_24dp.png │ │ ├── ic_chevron_right_grey600_24dp.png │ │ ├── ic_close_circle_outline_grey600_24dp.png │ │ ├── ic_close_grey600_24dp.png │ │ ├── ic_eye_off_grey600_24dp.png │ │ ├── ic_eye_white_24dp.png │ │ ├── ic_filter_white_24dp.png │ │ ├── ic_heart_grey.png │ │ ├── ic_heart_grey600_24dp.png │ │ ├── ic_home_grey600_24dp.png │ │ ├── ic_image_grey600_36dp.png │ │ ├── ic_minus_circle_outline_grey600_18dp.png │ │ ├── ic_plus_circle_outline_grey600_18dp.png │ │ ├── ic_sort_white_24dp.png │ │ └── ic_view_list_grey600_24dp.png │ │ ├── drawable-xxxhdpi │ │ ├── ic_account_grey600_24dp.png │ │ ├── ic_arrow_left.png │ │ ├── ic_arrow_left_white_24dp.png │ │ ├── ic_cart_outline_white_24dp.png │ │ ├── ic_check_white_24dp.png │ │ ├── ic_chevron_down_grey600_24dp.png │ │ ├── ic_chevron_right_grey600_24dp.png │ │ ├── ic_close_circle_outline_grey600_24dp.png │ │ ├── ic_close_grey600_24dp.png │ │ ├── ic_eye_off_grey600_24dp.png │ │ ├── ic_eye_white_24dp.png │ │ ├── ic_filter_white_24dp.png │ │ ├── ic_heart_grey.png │ │ ├── ic_heart_grey600_24dp.png │ │ ├── ic_home_grey600_24dp.png │ │ ├── ic_image_grey600_36dp.png │ │ ├── ic_minus_circle_outline_grey600_18dp.png │ │ ├── ic_plus_circle_outline_grey600_18dp.png │ │ ├── ic_sort_white_24dp.png │ │ └── ic_view_list_grey600_24dp.png │ │ ├── drawable │ │ ├── blue_circle.xml │ │ ├── border_blue.xml │ │ ├── border_grey.xml │ │ ├── group_indicator.xml │ │ ├── ic_launcher_background.xml │ │ ├── rounded_corner.xml │ │ ├── rounded_corner_blue.xml │ │ ├── rounded_corner_lightgrey.xml │ │ ├── rounded_corner_yellow.xml │ │ └── yellow_circle.xml │ │ ├── layout │ │ ├── account.xml │ │ ├── activity_main.xml │ │ ├── activity_splash.xml │ │ ├── blank.xml │ │ ├── border.xml │ │ ├── categories_grid_item.xml │ │ ├── categories_list_item.xml │ │ ├── filterlayout.xml │ │ ├── listview.xml │ │ ├── myorders.xml │ │ ├── product_detail.xml │ │ ├── product_grid_item.xml │ │ ├── product_list.xml │ │ ├── shopping_cart.xml │ │ ├── shoppingcart_item.xml │ │ ├── sign_in.xml │ │ ├── sign_up.xml │ │ ├── sort_filter_listitem.xml │ │ ├── subcategorieslist.xml │ │ ├── toolbar.xml │ │ └── wishlist_item.xml │ │ ├── menu │ │ └── navigation.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── preethzcodez │ └── ecommerceexample │ └── ExampleUnitTest.java ├── build.gradle ├── data.json ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── screenshots ├── Screenshot_2018-01-07-19-13-07-964_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-13-20-410_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-13-36-338_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-15-30-386_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-15-37-913_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-16-30-351_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-17-03-396_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-17-24-032_com.preethzcodez.ecommerceexample.png ├── Screenshot_2018-01-07-19-18-31-449_com.preethzcodez.ecommerceexample.png └── Screenshot_2018-01-07-19-18-48-338_com.preethzcodez.ecommerceexample.png └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Get it on Google Play 2 | 3 | ## What Is Not Done 4 | * Address Management 5 | * Order Review 6 | * Images 7 | * Dynamic Web API 8 | * Pagination (List / Grid - Scroll To Load More) 9 | * Payment Gateway 10 | * Products Search 11 | 12 | # Screenshots 13 | ### Home Page 14 |

15 | ### Product Details 16 |

17 | ### Categories 18 |

19 | ### Splash Screen 20 |

21 | ### Sign Up 22 |

23 | ### Account Details Page 24 |

25 | ### Filters Page 26 |

27 | ### Wishlist 28 |

29 | ### Shopping Cart 30 |

31 | ### My Orders Page 32 | 33 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 27 5 | defaultConfig { 6 | applicationId "com.preethzcodez.ecommerceexample" 7 | minSdkVersion 14 8 | targetSdkVersion 27 9 | versionCode 1 10 | versionName "1.0" 11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation fileTree(dir: 'libs', include: ['*.jar']) 23 | implementation 'com.android.support:appcompat-v7:27.0.2' 24 | implementation 'com.android.support.constraint:constraint-layout:1.0.2' 25 | testImplementation 'junit:junit:4.12' 26 | androidTestImplementation 'com.android.support.test:runner:1.0.1' 27 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 28 | compile 'com.squareup.retrofit2:retrofit:2.3.0' 29 | compile 'com.google.code.gson:gson:2.8.2' 30 | compile 'com.squareup.retrofit2:converter-gson:2.3.0' 31 | compile 'com.android.support:design:27.0.2' 32 | compile 'de.hdodenhof:circleimageview:2.2.0' 33 | compile 'org.apmem.tools:layouts:1.10@aar' 34 | } 35 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/preethzcodez/ecommerceexample/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.preethzcodez.ecommerceexample", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/SplashActivity.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Intent; 5 | import android.graphics.Color; 6 | import android.os.Bundle; 7 | import android.os.Handler; 8 | import android.os.Message; 9 | import android.os.Messenger; 10 | import android.support.annotation.Nullable; 11 | import android.support.design.widget.CoordinatorLayout; 12 | import android.support.design.widget.Snackbar; 13 | import android.support.v4.app.FragmentManager; 14 | import android.support.v4.app.FragmentTransaction; 15 | import android.support.v7.app.AppCompatActivity; 16 | import android.view.View; 17 | import android.widget.Button; 18 | import android.widget.TableLayout; 19 | 20 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 21 | import com.preethzcodez.ecommerceexample.database.SessionManager; 22 | import com.preethzcodez.ecommerceexample.fragments.SignIn; 23 | import com.preethzcodez.ecommerceexample.fragments.SignUp; 24 | import com.preethzcodez.ecommerceexample.interfaces.FinishActivity; 25 | import com.preethzcodez.ecommerceexample.service.SyncDBService; 26 | import com.preethzcodez.ecommerceexample.utils.Constants; 27 | 28 | /** 29 | * Created by Preeth on 1/3/2018 30 | */ 31 | 32 | public class SplashActivity extends AppCompatActivity implements FinishActivity { 33 | 34 | DB_Handler db_handler; 35 | Button signIn, signUp; 36 | Handler handler; 37 | TableLayout bottomLay; 38 | Snackbar snackbar = null; 39 | CoordinatorLayout coordinatorLayout; 40 | 41 | @Override 42 | protected void onCreate(@Nullable Bundle savedInstanceState) { 43 | super.onCreate(savedInstanceState); 44 | setContentView(R.layout.activity_splash); 45 | 46 | // Service To Fetch Data From URL 47 | setHandler(); 48 | startIntentService(); 49 | 50 | // Initialize DB Handler 51 | db_handler = new DB_Handler(this); 52 | 53 | setIds(); 54 | setClickListeners(); 55 | } 56 | 57 | // Set Ids 58 | private void setIds() { 59 | signIn = findViewById(R.id.signin); 60 | signUp = findViewById(R.id.signup); 61 | bottomLay = findViewById(R.id.bottomLay); 62 | coordinatorLayout = findViewById(R.id.coordinatorLay); 63 | } 64 | 65 | // Set Click Listeners 66 | private void setClickListeners() { 67 | // Sign In 68 | signIn.setOnClickListener(new View.OnClickListener() { 69 | @Override 70 | public void onClick(View view) { 71 | FragmentManager fm = getSupportFragmentManager(); 72 | FragmentTransaction ft = fm.beginTransaction(); 73 | ft.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left); 74 | ft.replace(R.id.fragment, new SignIn()); 75 | ft.addToBackStack(null); 76 | ft.commit(); 77 | } 78 | }); 79 | 80 | // Sign Up 81 | signUp.setOnClickListener(new View.OnClickListener() { 82 | @Override 83 | public void onClick(View view) { 84 | FragmentManager fm = getSupportFragmentManager(); 85 | FragmentTransaction ft = fm.beginTransaction(); 86 | ft.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left); 87 | ft.replace(R.id.fragment, new SignUp()); 88 | ft.addToBackStack(null); 89 | ft.commit(); 90 | } 91 | }); 92 | } 93 | 94 | // Start Intent Service To Fetch Data 95 | private void startIntentService() { 96 | Intent intent = new Intent(getApplicationContext(), SyncDBService.class); 97 | intent.putExtra("messenger", new Messenger(handler)); 98 | startService(intent); 99 | } 100 | 101 | // Check Session 102 | private void checkSession() { 103 | SessionManager sessionManager = new SessionManager(this); 104 | if (sessionManager.getSessionData(Constants.SESSION_EMAIL) != null && sessionManager.getSessionData(Constants.SESSION_EMAIL).trim().length() > 0) { 105 | new Handler().postDelayed(new Runnable() { 106 | @Override 107 | public void run() { 108 | loadNextActivity(); 109 | } 110 | }, 3000); 111 | } else { 112 | bottomLay.setVisibility(View.VISIBLE); 113 | } 114 | } 115 | 116 | // Load Next Activity 117 | private void loadNextActivity() { 118 | Intent i = new Intent(getApplicationContext(), MainActivity.class); 119 | startActivity(i); 120 | overridePendingTransition(0, 0); 121 | finish(); 122 | } 123 | 124 | // Handler To Receive Data From Service 125 | @SuppressLint("HandlerLeak") 126 | private void setHandler() { 127 | try { 128 | handler = new Handler() { 129 | @Override 130 | public void handleMessage(Message msg) { 131 | Bundle reply = msg.getData(); 132 | if (reply.getString("message").equals("success")) { 133 | checkSession(); 134 | } else { 135 | // Show Error In Snack Bar 136 | try { 137 | String message = reply.getString("message"); 138 | assert message != null; 139 | snackbar = Snackbar 140 | .make(coordinatorLayout, message, Snackbar.LENGTH_INDEFINITE) 141 | .setAction(R.string.retry, new View.OnClickListener() { 142 | @Override 143 | public void onClick(View view) { 144 | snackbar.dismiss(); 145 | startIntentService(); 146 | } 147 | }); 148 | 149 | // Changing message text color 150 | snackbar.setActionTextColor(Color.RED); 151 | snackbar.show(); 152 | } catch (Exception e) { 153 | e.printStackTrace(); 154 | } 155 | } 156 | } 157 | }; 158 | } catch (Exception e) { 159 | e.printStackTrace(); 160 | } 161 | } 162 | 163 | @Override 164 | public void finishActivity() { 165 | overridePendingTransition(0, 0); 166 | finish(); 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/activities/MyOrders.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.activities; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.View; 8 | import android.widget.ImageView; 9 | import android.widget.ListView; 10 | import android.widget.TextView; 11 | 12 | import com.preethzcodez.ecommerceexample.R; 13 | import com.preethzcodez.ecommerceexample.adapters.MyOrdersAdapter; 14 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 15 | import com.preethzcodez.ecommerceexample.database.SessionManager; 16 | import com.preethzcodez.ecommerceexample.pojo.Cart; 17 | import com.preethzcodez.ecommerceexample.utils.Constants; 18 | 19 | import java.util.List; 20 | 21 | /** 22 | * Created by Preeth on 1/7/2018 23 | */ 24 | 25 | public class MyOrders extends AppCompatActivity { 26 | 27 | @Override 28 | protected void onCreate(@Nullable Bundle savedInstanceState) { 29 | super.onCreate(savedInstanceState); 30 | setContentView(R.layout.myorders); 31 | 32 | // Set Toolbar 33 | Toolbar toolbar = findViewById(R.id.toolbar); 34 | setSupportActionBar(toolbar); 35 | 36 | // Set Title 37 | TextView titleToolbar = findViewById(R.id.titleToolbar); 38 | titleToolbar.setText(R.string.my_orders); 39 | 40 | // Back Button 41 | ImageView backButton = findViewById(R.id.backButton); 42 | backButton.setVisibility(View.VISIBLE); 43 | backButton.setOnClickListener(new View.OnClickListener() { 44 | @Override 45 | public void onClick(View view) { 46 | onBackPressed(); 47 | } 48 | }); 49 | 50 | // Hide Cart Icon 51 | ImageView cart = findViewById(R.id.cart); 52 | cart.setVisibility(View.GONE); 53 | 54 | // Get Orders From DB 55 | DB_Handler db_handler = new DB_Handler(this); 56 | SessionManager sessionManager = new SessionManager(this); 57 | List orderHistory = db_handler.getOrders(sessionManager.getSessionData(Constants.SESSION_EMAIL)); 58 | 59 | // Fill ListView 60 | ListView listView = findViewById(R.id.listview); 61 | listView.setAdapter(new MyOrdersAdapter(this,orderHistory)); 62 | } 63 | 64 | @Override 65 | public void onBackPressed() { 66 | super.onBackPressed(); 67 | overridePendingTransition(0,0); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/activities/ShoppingCart.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.activities; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.support.annotation.Nullable; 7 | import android.support.v7.app.AppCompatActivity; 8 | import android.support.v7.widget.Toolbar; 9 | import android.view.View; 10 | import android.widget.Button; 11 | import android.widget.ImageView; 12 | import android.widget.ListView; 13 | import android.widget.TextView; 14 | import android.widget.Toast; 15 | 16 | import com.preethzcodez.ecommerceexample.MainActivity; 17 | import com.preethzcodez.ecommerceexample.R; 18 | import com.preethzcodez.ecommerceexample.adapters.ShoppingCartListAdapter; 19 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 20 | import com.preethzcodez.ecommerceexample.database.SessionManager; 21 | import com.preethzcodez.ecommerceexample.pojo.Cart; 22 | import com.preethzcodez.ecommerceexample.utils.Constants; 23 | 24 | import java.text.DecimalFormat; 25 | import java.util.List; 26 | 27 | /** 28 | * Created by Preeth on 1/6/2018 29 | */ 30 | 31 | public class ShoppingCart extends AppCompatActivity implements ShoppingCartListAdapter.UpdatePayableAmount, ShoppingCartListAdapter.MonitorListItems { 32 | 33 | Toolbar toolbar; 34 | 35 | @Override 36 | protected void onCreate(@Nullable Bundle savedInstanceState) { 37 | super.onCreate(savedInstanceState); 38 | setContentView(R.layout.shopping_cart); 39 | 40 | // Set Toolbar 41 | toolbar = findViewById(R.id.toolbar); 42 | setSupportActionBar(toolbar); 43 | 44 | // Set Title 45 | TextView titleToolbar = findViewById(R.id.titleToolbar); 46 | titleToolbar.setText(R.string.shopping_cart); 47 | 48 | // Hide Cart Icon 49 | ImageView cart = findViewById(R.id.cart); 50 | cart.setVisibility(View.GONE); 51 | 52 | // Back Button 53 | ImageView backButton = findViewById(R.id.backButton); 54 | backButton.setVisibility(View.VISIBLE); 55 | backButton.setOnClickListener(new View.OnClickListener() { 56 | @Override 57 | public void onClick(View view) { 58 | onBackPressed(); 59 | } 60 | }); 61 | 62 | // Get Cart Items 63 | final SessionManager sessionManager = new SessionManager(this); 64 | final DB_Handler db_handler = new DB_Handler(this); 65 | final List shoppingCart = db_handler.getCartItems(sessionManager.getSessionData(Constants.SESSION_EMAIL)); 66 | 67 | // Fill ListView With Items 68 | ListView listView = findViewById(R.id.listview); 69 | listView.setAdapter(new ShoppingCartListAdapter(this, shoppingCart)); 70 | 71 | setPayableAmount(shoppingCart); 72 | 73 | // Order Button Click 74 | Button placeOrder = findViewById(R.id.placeOrder); 75 | placeOrder.setOnClickListener(new View.OnClickListener() { 76 | @Override 77 | public void onClick(View view) { 78 | // delete from cart and place order 79 | db_handler.deleteCartItems(); 80 | db_handler.insertOrderHistory(shoppingCart,sessionManager.getSessionData(Constants.SESSION_EMAIL)); 81 | Toast.makeText(getApplicationContext(),"Order Placed Successfully",Toast.LENGTH_LONG).show(); 82 | 83 | // Call Main Activity 84 | Intent intent = new Intent(getApplicationContext(), MainActivity.class); 85 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 86 | startActivity(intent); 87 | overridePendingTransition(0,0); 88 | finish(); 89 | } 90 | }); 91 | } 92 | 93 | // Calculate Payable Amount 94 | @SuppressLint("SetTextI18n") 95 | private void setPayableAmount(List shoppingCart) { 96 | Double totalAmount = 0.0; 97 | for (int i = 0; i < shoppingCart.size(); i++) { 98 | int itemQuantity = shoppingCart.get(i).getItemQuantity(); 99 | Double tax = shoppingCart.get(i).getProduct().getTax().getValue(); 100 | Double price = Double.valueOf(shoppingCart.get(i).getVariant().getPrice()); 101 | price = (price + tax) * itemQuantity; 102 | totalAmount = totalAmount + price; 103 | } 104 | 105 | // Set Value 106 | DecimalFormat formatter = new DecimalFormat("#,###.00"); 107 | TextView payable = findViewById(R.id.payableAmt); 108 | payable.setText("Rs."+formatter.format(totalAmount)); 109 | } 110 | 111 | // update payable amount 112 | @Override 113 | public void updatePayableAmount(List shoppingCart) { 114 | setPayableAmount(shoppingCart); 115 | } 116 | 117 | // finish activity if cart empty 118 | @Override 119 | public void finishActivity(List shoppingCart) { 120 | try { 121 | if (shoppingCart.size() == 0) { 122 | overridePendingTransition(0,0); 123 | finish(); 124 | } 125 | } catch (Exception e) { 126 | overridePendingTransition(0,0); 127 | finish(); 128 | } 129 | } 130 | 131 | @Override 132 | public void onBackPressed() { 133 | super.onBackPressed(); 134 | overridePendingTransition(0,0); 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/adapters/CategoryListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.adapters; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.BaseAdapter; 9 | import android.widget.TextView; 10 | 11 | import com.preethzcodez.ecommerceexample.R; 12 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 13 | import com.preethzcodez.ecommerceexample.pojo.Category; 14 | import com.preethzcodez.ecommerceexample.utils.ExpandableHeightGridView; 15 | 16 | import java.util.List; 17 | 18 | /** 19 | * Created by Preeth on 1/4/2018 20 | */ 21 | 22 | public class CategoryListAdapter extends BaseAdapter { 23 | 24 | private Context context; 25 | private LayoutInflater inflater; 26 | private List categoryList; 27 | private DB_Handler db_handler; 28 | 29 | public CategoryListAdapter(Context context, List categoryList) 30 | { 31 | this.context = context; 32 | this.categoryList = categoryList; 33 | db_handler = new DB_Handler(context); 34 | inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 35 | } 36 | 37 | @Override 38 | public int getCount() { 39 | return categoryList.size(); 40 | } 41 | 42 | @Override 43 | public Object getItem(int i) { 44 | return categoryList.get(i); 45 | } 46 | 47 | @Override 48 | public long getItemId(int i) { 49 | return i; 50 | } 51 | 52 | @SuppressLint({"ViewHolder", "InflateParams"}) 53 | @Override 54 | public View getView(int position, View view, ViewGroup viewGroup) { 55 | Holder holder = new Holder(); 56 | View rowView; 57 | 58 | rowView = inflater.inflate(R.layout.categories_list_item, null); 59 | holder.category = rowView.findViewById(R.id.category); 60 | holder.category.setText(categoryList.get(position).getName()); 61 | 62 | List subCategoryList = db_handler.getSubcategoryList(categoryList.get(position).getId()); 63 | 64 | // fill gridview with data 65 | holder.expandableHeightGridView= rowView.findViewById(R.id.subcategories); 66 | holder.expandableHeightGridView.setAdapter(new SubcategoryGridAdapter(context, subCategoryList)); 67 | holder.expandableHeightGridView.setExpanded(true); 68 | 69 | return rowView; 70 | } 71 | 72 | public class Holder { 73 | TextView category; 74 | ExpandableHeightGridView expandableHeightGridView; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/adapters/MyOrdersAdapter.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.adapters; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.BaseAdapter; 10 | import android.widget.ImageView; 11 | import android.widget.LinearLayout; 12 | import android.widget.RelativeLayout; 13 | import android.widget.TextView; 14 | 15 | import com.preethzcodez.ecommerceexample.R; 16 | import com.preethzcodez.ecommerceexample.activities.ProductDetails; 17 | import com.preethzcodez.ecommerceexample.pojo.Cart; 18 | import com.preethzcodez.ecommerceexample.utils.Util; 19 | 20 | import java.util.List; 21 | 22 | /** 23 | * Created by Preeth on 1/7/2018 24 | */ 25 | 26 | public class MyOrdersAdapter extends BaseAdapter { 27 | 28 | private Context context; 29 | private LayoutInflater inflater; 30 | private List shoppingCart; 31 | 32 | public MyOrdersAdapter(Context context, List shoppingCart) { 33 | this.context = context; 34 | this.shoppingCart = shoppingCart; 35 | inflater = (LayoutInflater) context. 36 | getSystemService(Context.LAYOUT_INFLATER_SERVICE); 37 | } 38 | 39 | @Override 40 | public int getCount() { 41 | return shoppingCart.size(); 42 | } 43 | 44 | @Override 45 | public Object getItem(int i) { 46 | return shoppingCart.get(i); 47 | } 48 | 49 | @Override 50 | public long getItemId(int i) { 51 | return i; 52 | } 53 | 54 | @SuppressLint({"ViewHolder", "SetTextI18n", "InflateParams"}) 55 | @Override 56 | public View getView(final int position, View view, ViewGroup viewGroup) { 57 | // TODO Auto-generated method stub 58 | final Holder holder = new Holder(); 59 | View rowView; 60 | 61 | rowView = inflater.inflate(R.layout.shoppingcart_item, null); 62 | holder.title = rowView.findViewById(R.id.title); 63 | holder.size = rowView.findViewById(R.id.size); 64 | holder.color = rowView.findViewById(R.id.color); 65 | holder.price = rowView.findViewById(R.id.price); 66 | holder.tax = rowView.findViewById(R.id.tax); 67 | holder.qty = rowView.findViewById(R.id.quantity); 68 | holder.remove = rowView.findViewById(R.id.remove); 69 | holder.qtyLay = rowView.findViewById(R.id.qtyLay); 70 | 71 | holder.title.setText(shoppingCart.get(position).getProduct().getName()); 72 | holder.color.setText("Color: " + shoppingCart.get(position).getVariant().getColor()); 73 | 74 | String size = String.valueOf(shoppingCart.get(position).getVariant().getSize()); 75 | try { 76 | if (size != null && !size.equalsIgnoreCase("null") && !size.equalsIgnoreCase("0.0")) { 77 | holder.size.setText("Size: " + size); 78 | } else { 79 | holder.size.setVisibility(View.GONE); 80 | } 81 | } catch (NullPointerException e) { 82 | holder.size.setVisibility(View.GONE); 83 | } 84 | 85 | // Calculate Price Value 86 | final int[] quantity = {shoppingCart.get(position).getItemQuantity()}; 87 | String taxName = shoppingCart.get(position).getProduct().getTax().getName(); 88 | final Double taxValue = shoppingCart.get(position).getProduct().getTax().getValue(); 89 | final Double priceValue = Double.valueOf(shoppingCart.get(position).getVariant().getPrice()); 90 | 91 | holder.qty.setVisibility(View.VISIBLE); 92 | holder.qty.setText(String.valueOf("Quantity: "+quantity[0])); 93 | holder.price.setText("Rs." + Util.formatDouble(calculatePrice(taxValue, priceValue, quantity[0]))); 94 | holder.tax.setText("("+taxName + ": Rs." + taxValue+")"); 95 | 96 | 97 | // Product Item Click 98 | holder.itemLay = rowView.findViewById(R.id.itemLay); 99 | holder.itemLay.setOnClickListener(new View.OnClickListener() { 100 | @Override 101 | public void onClick(View view) { 102 | Intent intent = new Intent(context, ProductDetails.class); 103 | intent.putExtra("ProductId", shoppingCart.get(position).getProduct().getId()); 104 | context.startActivity(intent); 105 | } 106 | }); 107 | 108 | // Hide Remove Button 109 | holder.remove.setVisibility(View.GONE); 110 | 111 | // Hide Quantity Update Buttons 112 | holder.qtyLay.setVisibility(View.GONE); 113 | 114 | return rowView; 115 | } 116 | 117 | private Double calculatePrice(Double taxValue, Double priceValue, int quantity) { 118 | return (taxValue + priceValue) * quantity; 119 | } 120 | 121 | public class Holder { 122 | RelativeLayout itemLay; 123 | LinearLayout qtyLay; 124 | TextView title, price, size, color, tax, qty; 125 | ImageView remove; 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/adapters/ProductListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.adapters; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.app.Activity; 5 | import android.content.Context; 6 | import android.content.Intent; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.BaseAdapter; 11 | import android.widget.ImageView; 12 | import android.widget.RelativeLayout; 13 | import android.widget.TextView; 14 | import android.widget.Toast; 15 | 16 | import com.preethzcodez.ecommerceexample.R; 17 | import com.preethzcodez.ecommerceexample.activities.ProductDetails; 18 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 19 | import com.preethzcodez.ecommerceexample.database.SessionManager; 20 | import com.preethzcodez.ecommerceexample.pojo.Product; 21 | import com.preethzcodez.ecommerceexample.utils.Constants; 22 | 23 | import java.util.List; 24 | 25 | /** 26 | * Created by Preeth on 1/4/18 27 | */ 28 | 29 | public class ProductListAdapter extends BaseAdapter { 30 | 31 | private Context context; 32 | private LayoutInflater inflater; 33 | private List productList; 34 | 35 | public ProductListAdapter(Context context, List productList) { 36 | this.context = context; 37 | this.productList = productList; 38 | inflater = (LayoutInflater) context. 39 | getSystemService(Context.LAYOUT_INFLATER_SERVICE); 40 | } 41 | 42 | @Override 43 | public int getCount() { 44 | return productList.size(); 45 | } 46 | 47 | @Override 48 | public Object getItem(int i) { 49 | return productList.get(i); 50 | } 51 | 52 | @Override 53 | public long getItemId(int i) { 54 | return i; 55 | } 56 | 57 | @SuppressLint({"ViewHolder", "InflateParams"}) 58 | @Override 59 | public View getView(final int position, View view, ViewGroup viewGroup) { 60 | // TODO Auto-generated method stub 61 | final Holder holder = new Holder(); 62 | View rowView; 63 | 64 | rowView = inflater.inflate(R.layout.product_grid_item, null); 65 | holder.name = rowView.findViewById(R.id.name); 66 | holder.price = rowView.findViewById(R.id.price); 67 | holder.heart = rowView.findViewById(R.id.heart); 68 | 69 | holder.name.setText(productList.get(position).getName()); 70 | holder.price.setText(productList.get(position).getPrice_range()); 71 | 72 | // Product Item Click 73 | holder.itemLay = rowView.findViewById(R.id.itemLay); 74 | holder.itemLay.setOnClickListener(new View.OnClickListener() { 75 | @Override 76 | public void onClick(View view) { 77 | Intent intent = new Intent(context, ProductDetails.class); 78 | intent.putExtra("ProductId", productList.get(position).getId()); 79 | context.startActivity(intent); 80 | Activity activity = (Activity) context; 81 | activity.overridePendingTransition(0,0); 82 | } 83 | }); 84 | 85 | if (productList.get(position).getShortlisted()) { 86 | holder.heart.setImageResource(R.drawable.ic_heart_grey); 87 | } 88 | 89 | // Wish List Item Click 90 | holder.heart.setOnClickListener(new View.OnClickListener() { 91 | @Override 92 | public void onClick(View view) { 93 | // Add / Remove Item To Wish List 94 | DB_Handler db_handler = new DB_Handler(context); 95 | SessionManager sessionManager = new SessionManager(context); 96 | if (!productList.get(position).getShortlisted()) { 97 | holder.heart.setImageResource(R.drawable.ic_heart_grey); 98 | if (db_handler.shortlistItem(productList.get(position).getId(), sessionManager.getSessionData(Constants.SESSION_EMAIL)) > 0) { 99 | productList.get(position).setShortlisted(true); 100 | Toast.makeText(context, "Item Added To Wish List", Toast.LENGTH_LONG).show(); 101 | } 102 | } else { 103 | holder.heart.setImageResource(R.drawable.ic_heart_grey600_24dp); 104 | if (db_handler.removeShortlistedItem(productList.get(position).getId(), sessionManager.getSessionData(Constants.SESSION_EMAIL))) { 105 | productList.get(position).setShortlisted(false); 106 | Toast.makeText(context, "Item Removed From Wish List", Toast.LENGTH_LONG).show(); 107 | } 108 | } 109 | } 110 | }); 111 | 112 | return rowView; 113 | } 114 | 115 | public class Holder { 116 | RelativeLayout itemLay; 117 | TextView name, price; 118 | ImageView heart; 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/adapters/SortItemListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.adapters; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.BaseAdapter; 9 | import android.widget.ImageView; 10 | import android.widget.TextView; 11 | 12 | import com.preethzcodez.ecommerceexample.R; 13 | 14 | /** 15 | * Created by Preeth on 1/5/2018 16 | */ 17 | 18 | public class SortItemListAdapter extends BaseAdapter { 19 | 20 | private LayoutInflater inflater; 21 | private String[] sortBy; 22 | private int selectedId; 23 | 24 | public SortItemListAdapter(Context context, String[] sortBy, int selectedId) { 25 | this.sortBy = sortBy; 26 | this.selectedId = selectedId; 27 | inflater = (LayoutInflater) context. 28 | getSystemService(Context.LAYOUT_INFLATER_SERVICE); 29 | } 30 | 31 | @Override 32 | public int getCount() { 33 | return sortBy.length; 34 | } 35 | 36 | @Override 37 | public Object getItem(int i) { 38 | return sortBy[i]; 39 | } 40 | 41 | @Override 42 | public long getItemId(int i) { 43 | return i; 44 | } 45 | 46 | @SuppressLint({"ViewHolder", "InflateParams"}) 47 | @Override 48 | public View getView(final int position, View view, ViewGroup viewGroup) { 49 | // TODO Auto-generated method stub 50 | Holder holder = new Holder(); 51 | View rowView; 52 | 53 | rowView = inflater.inflate(R.layout.sort_filter_listitem, null); 54 | holder.name = rowView.findViewById(R.id.name); 55 | holder.tick = rowView.findViewById(R.id.tick); 56 | 57 | holder.name.setText(sortBy[position]); 58 | 59 | if (position == selectedId) { 60 | holder.tick.setVisibility(View.VISIBLE); 61 | } else { 62 | holder.tick.setVisibility(View.GONE); 63 | } 64 | 65 | return rowView; 66 | } 67 | 68 | public class Holder { 69 | TextView name; 70 | ImageView tick; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/adapters/SubcategoryGridAdapter.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.adapters; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.os.Bundle; 6 | import android.support.v4.app.FragmentManager; 7 | import android.support.v4.app.FragmentTransaction; 8 | import android.view.LayoutInflater; 9 | import android.view.View; 10 | import android.view.ViewGroup; 11 | import android.widget.BaseAdapter; 12 | import android.widget.RelativeLayout; 13 | import android.widget.TextView; 14 | 15 | import com.preethzcodez.ecommerceexample.MainActivity; 16 | import com.preethzcodez.ecommerceexample.R; 17 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 18 | import com.preethzcodez.ecommerceexample.fragments.Products; 19 | import com.preethzcodez.ecommerceexample.fragments.Subcategories; 20 | import com.preethzcodez.ecommerceexample.pojo.Category; 21 | import com.preethzcodez.ecommerceexample.utils.Constants; 22 | 23 | import java.io.Serializable; 24 | import java.util.List; 25 | 26 | /** 27 | * Created by Preeth on 1/4/2018 28 | */ 29 | 30 | public class SubcategoryGridAdapter extends BaseAdapter { 31 | 32 | private Context context; 33 | private LayoutInflater inflater; 34 | private List subCategoryList; 35 | private DB_Handler db_handler; 36 | 37 | public SubcategoryGridAdapter(Context context, List subCategoryList) { 38 | this.context = context; 39 | this.subCategoryList = subCategoryList; 40 | db_handler = new DB_Handler(context); 41 | inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 42 | } 43 | 44 | @Override 45 | public int getCount() { 46 | return subCategoryList.size(); 47 | } 48 | 49 | @Override 50 | public Object getItem(int i) { 51 | return subCategoryList.get(i); 52 | } 53 | 54 | @Override 55 | public long getItemId(int i) { 56 | return i; 57 | } 58 | 59 | @SuppressLint({"ViewHolder", "InflateParams"}) 60 | @Override 61 | public View getView(final int position, View view, ViewGroup viewGroup) { 62 | Holder holder = new Holder(); 63 | View rowView; 64 | 65 | rowView = inflater.inflate(R.layout.categories_grid_item, null); 66 | holder.category = rowView.findViewById(R.id.name); 67 | holder.category.setText(subCategoryList.get(position).getName()); 68 | 69 | holder.gridItemLayout = rowView.findViewById(R.id.gridItemLayouut); 70 | holder.gridItemLayout.setOnClickListener(new View.OnClickListener() { 71 | @Override 72 | public void onClick(View view) { 73 | int id = subCategoryList.get(position).getId(); 74 | 75 | // get subcategories by id 76 | List childCategories = db_handler.getSubcategoryList(id); 77 | 78 | // initialize bundle and fragment manager 79 | Bundle bundle = new Bundle(); 80 | FragmentManager fm = ((MainActivity) context).getSupportFragmentManager(); 81 | FragmentTransaction ft = fm.beginTransaction(); 82 | 83 | // Check If Subcategories Are There Else Call Products List 84 | if (childCategories.size() > 0) { 85 | 86 | // add bundle arguments 87 | bundle.putString(Constants.TITLE,subCategoryList.get(position).getName()); 88 | bundle.putSerializable(Constants.CAT_KEY, (Serializable) childCategories); 89 | 90 | Subcategories subcategories = new Subcategories(); 91 | subcategories.setArguments(bundle); 92 | 93 | ft.replace(R.id.content, subcategories, Constants.FRAG_SUBCAT); 94 | ft.addToBackStack(null); 95 | ft.commit(); 96 | } else { 97 | // add bundle arguments 98 | bundle.putInt(Constants.CAT_ID_KEY, id); 99 | bundle.putString(Constants.TITLE,subCategoryList.get(position).getName()); 100 | 101 | Products products = new Products(); 102 | products.setArguments(bundle); 103 | 104 | ft.replace(R.id.content, products, Constants.FRAG_PDT); 105 | ft.addToBackStack(null); 106 | ft.commit(); 107 | } 108 | } 109 | }); 110 | 111 | return rowView; 112 | } 113 | 114 | public class Holder { 115 | TextView category; 116 | RelativeLayout gridItemLayout; 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/adapters/WishlistAdapter.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.adapters; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.BaseAdapter; 10 | import android.widget.ImageView; 11 | import android.widget.RelativeLayout; 12 | import android.widget.TextView; 13 | 14 | import com.preethzcodez.ecommerceexample.R; 15 | import com.preethzcodez.ecommerceexample.activities.ProductDetails; 16 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 17 | import com.preethzcodez.ecommerceexample.database.SessionManager; 18 | import com.preethzcodez.ecommerceexample.pojo.Product; 19 | import com.preethzcodez.ecommerceexample.utils.Constants; 20 | 21 | import java.util.List; 22 | 23 | /** 24 | * Created by Preeth on 1/7/2018 25 | */ 26 | 27 | public class WishlistAdapter extends BaseAdapter { 28 | 29 | private Context context; 30 | private LayoutInflater inflater; 31 | private List productList; 32 | 33 | public WishlistAdapter(Context context, List productList) { 34 | this.context = context; 35 | this.productList = productList; 36 | inflater = (LayoutInflater) context. 37 | getSystemService(Context.LAYOUT_INFLATER_SERVICE); 38 | } 39 | 40 | @Override 41 | public int getCount() { 42 | return productList.size(); 43 | } 44 | 45 | @Override 46 | public Object getItem(int i) { 47 | return productList.get(i); 48 | } 49 | 50 | @Override 51 | public long getItemId(int i) { 52 | return i; 53 | } 54 | 55 | @SuppressLint({"ViewHolder", "InflateParams"}) 56 | @Override 57 | public View getView(final int position, View view, ViewGroup viewGroup) { 58 | // TODO Auto-generated method stub 59 | Holder holder = new Holder(); 60 | View rowView; 61 | 62 | rowView = inflater.inflate(R.layout.wishlist_item, null); 63 | holder.title = rowView.findViewById(R.id.title); 64 | holder.price = rowView.findViewById(R.id.price); 65 | holder.remove = rowView.findViewById(R.id.remove); 66 | 67 | holder.title.setText(productList.get(position).getName()); 68 | holder.price.setText(productList.get(position).getPrice_range()); 69 | 70 | // Product Item Click 71 | holder.itemLay = rowView.findViewById(R.id.itemLay); 72 | holder.itemLay.setOnClickListener(new View.OnClickListener() { 73 | @Override 74 | public void onClick(View view) { 75 | Intent intent = new Intent(context, ProductDetails.class); 76 | intent.putExtra("ProductId", productList.get(position).getId()); 77 | context.startActivity(intent); 78 | } 79 | }); 80 | 81 | // Wish List Item Click 82 | holder.remove.setOnClickListener(new View.OnClickListener() { 83 | @Override 84 | public void onClick(View view) { 85 | // Remove Item From Wish List 86 | DB_Handler db_handler = new DB_Handler(context); 87 | SessionManager sessionManager = new SessionManager(context); 88 | if (db_handler.removeShortlistedItem(productList.get(position).getId(), sessionManager.getSessionData(Constants.SESSION_EMAIL))) { 89 | productList.remove(position); 90 | notifyDataSetChanged(); 91 | } 92 | } 93 | }); 94 | 95 | return rowView; 96 | } 97 | 98 | public class Holder { 99 | RelativeLayout itemLay; 100 | TextView title, price; 101 | ImageView remove; 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/database/SessionManager.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.database; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.app.Activity; 5 | import android.content.Context; 6 | import android.content.SharedPreferences; 7 | 8 | /** 9 | * Created by Preeth on 1/6/2018 10 | */ 11 | 12 | public class SessionManager { 13 | 14 | private SharedPreferences SharedPref; 15 | private SharedPreferences.Editor SharedPref_Editor; 16 | 17 | @SuppressLint("CommitPrefEdits") 18 | public SessionManager(Context context) { 19 | this.SharedPref = context.getSharedPreferences("com.preethzcodez.ecommerceexample.database.PREFERENCE.", Activity.MODE_PRIVATE); 20 | this.SharedPref_Editor = SharedPref.edit(); 21 | } 22 | 23 | public void saveSession(String Key, String Value) { 24 | SharedPref_Editor.putString(Key, Value); 25 | SharedPref_Editor.commit(); 26 | } 27 | 28 | public String getSessionData(String Key) { 29 | return SharedPref.getString(Key, ""); 30 | } 31 | 32 | public void clearPreferences() { 33 | SharedPref_Editor.clear(); 34 | SharedPref_Editor.commit(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/fragments/Account.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.fragments; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.support.annotation.NonNull; 7 | import android.support.annotation.Nullable; 8 | import android.support.v4.app.Fragment; 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | import android.widget.RelativeLayout; 13 | import android.widget.TextView; 14 | 15 | import com.preethzcodez.ecommerceexample.R; 16 | import com.preethzcodez.ecommerceexample.SplashActivity; 17 | import com.preethzcodez.ecommerceexample.activities.MyOrders; 18 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 19 | import com.preethzcodez.ecommerceexample.database.SessionManager; 20 | import com.preethzcodez.ecommerceexample.interfaces.FinishActivity; 21 | import com.preethzcodez.ecommerceexample.pojo.User; 22 | import com.preethzcodez.ecommerceexample.utils.Constants; 23 | 24 | /** 25 | * Created by Preeth on 1/6/2018 26 | */ 27 | 28 | public class Account extends Fragment { 29 | 30 | DB_Handler db_handler; 31 | TextView name, email, mobile; 32 | RelativeLayout orders, logoutLay; 33 | FinishActivity finishActivityCallback; 34 | 35 | @Override 36 | public void onAttach(Context context) { 37 | super.onAttach(context); 38 | finishActivityCallback = (FinishActivity) context; 39 | } 40 | 41 | @Nullable 42 | @Override 43 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 44 | // Inflate the layout for this fragment 45 | View view = inflater.inflate(R.layout.account, container, false); 46 | 47 | // Get User 48 | db_handler = new DB_Handler(getActivity()); 49 | SessionManager sessionManager = new SessionManager(getActivity()); 50 | User user = db_handler.getUser(sessionManager.getSessionData(Constants.SESSION_EMAIL)); 51 | 52 | // Set Values 53 | setIds(view); 54 | setValues(user); 55 | setClickListeners(); 56 | 57 | return view; 58 | } 59 | 60 | // Set Ids 61 | private void setIds(View view) { 62 | logoutLay = view.findViewById(R.id.logoutLay); 63 | name = view.findViewById(R.id.name); 64 | email = view.findViewById(R.id.email); 65 | mobile = view.findViewById(R.id.mobile); 66 | orders = view.findViewById(R.id.myOrdersLay); 67 | } 68 | 69 | // Set Values 70 | private void setValues(User user) { 71 | // Name 72 | name.setText(user.getName()); 73 | 74 | // Email 75 | email.setText(user.getEmail()); 76 | 77 | // Mobile 78 | mobile.setText(user.getMobile()); 79 | } 80 | 81 | // Set Click Listeners 82 | private void setClickListeners() { 83 | // My Orders 84 | orders.setOnClickListener(new View.OnClickListener() { 85 | @SuppressWarnings("ConstantConditions") 86 | @Override 87 | public void onClick(View view) { 88 | Intent intent = new Intent(getActivity(), MyOrders.class); 89 | startActivity(intent); 90 | getActivity().overridePendingTransition(0,0); 91 | } 92 | }); 93 | 94 | // Logout 95 | logoutLay.setOnClickListener(new View.OnClickListener() { 96 | @Override 97 | public void onClick(View view) { 98 | SessionManager sessionManager = new SessionManager(getActivity()); 99 | sessionManager.clearPreferences(); 100 | Intent intent = new Intent(getActivity(), SplashActivity.class); 101 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 102 | startActivity(intent); 103 | finishActivityCallback.finishActivity(); 104 | } 105 | }); 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/fragments/BlankFragment.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.fragments; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.support.v4.app.FragmentManager; 8 | import android.support.v4.app.FragmentTransaction; 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | import android.view.animation.Animation; 13 | import android.view.animation.AnimationUtils; 14 | 15 | import com.preethzcodez.ecommerceexample.R; 16 | 17 | /** 18 | * Created by Preeth on 1/7/2018. 19 | */ 20 | 21 | // Blank Fragment For Helping In Removing Fragment With Animation 22 | public class BlankFragment extends Fragment { 23 | 24 | @Nullable 25 | @Override 26 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 27 | // Inflate the layout for this fragment 28 | return inflater.inflate(R.layout.blank, container, false); 29 | } 30 | 31 | @Override 32 | public Animation onCreateAnimation (int transit, boolean enter, int nextAnim) { 33 | //Check if the superclass already created the animation 34 | Animation anim = super.onCreateAnimation(transit, enter, nextAnim); 35 | 36 | //If not, and an animation is defined, load it now 37 | if (anim == null && nextAnim != 0) { 38 | anim = AnimationUtils.loadAnimation(getActivity(), nextAnim); 39 | } 40 | 41 | //If there is an animation for this fragment, add a listener. 42 | if (anim != null) { 43 | anim.setAnimationListener(new Animation.AnimationListener() { 44 | @Override 45 | public void onAnimationStart (Animation animation) { 46 | onAnimationStarted(); 47 | } 48 | 49 | @Override 50 | public void onAnimationEnd (Animation animation) { 51 | onAnimationEnded(); 52 | } 53 | 54 | @Override 55 | public void onAnimationRepeat (Animation animation) { 56 | onAnimationRepeated(); 57 | } 58 | }); 59 | } 60 | return anim; 61 | } 62 | 63 | protected void onAnimationStarted () {} 64 | 65 | @SuppressWarnings("ConstantConditions") 66 | protected void onAnimationEnded () { 67 | // Remove Fragment 68 | FragmentManager fm = getActivity().getSupportFragmentManager(); 69 | FragmentTransaction ft = fm.beginTransaction(); 70 | ft.remove(fm.findFragmentById(R.id.fragment)); 71 | ft.commit(); 72 | } 73 | 74 | protected void onAnimationRepeated () {} 75 | } 76 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/fragments/Categories.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.fragments; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.ListView; 11 | 12 | import com.preethzcodez.ecommerceexample.R; 13 | import com.preethzcodez.ecommerceexample.adapters.CategoryListAdapter; 14 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 15 | import com.preethzcodez.ecommerceexample.pojo.Category; 16 | 17 | import java.util.List; 18 | 19 | /** 20 | * Created by Preeth on 1/3/2018 21 | */ 22 | 23 | public class Categories extends Fragment { 24 | 25 | @Nullable 26 | @Override 27 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 28 | // Inflate the layout for this fragment 29 | View view = inflater.inflate(R.layout.listview, container, false); 30 | 31 | // load products 32 | DB_Handler db_handler = new DB_Handler(getActivity()); 33 | List categoryList = db_handler.getCategoryList(); 34 | 35 | // fill listview with data 36 | ListView listView= view.findViewById(R.id.listview); 37 | listView.setAdapter(new CategoryListAdapter(getActivity(), categoryList)); 38 | 39 | return view; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/fragments/SignIn.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.fragments; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.support.annotation.NonNull; 7 | import android.support.annotation.Nullable; 8 | import android.support.v4.app.Fragment; 9 | import android.support.v4.app.FragmentManager; 10 | import android.support.v4.app.FragmentTransaction; 11 | import android.text.method.PasswordTransformationMethod; 12 | import android.view.LayoutInflater; 13 | import android.view.View; 14 | import android.view.ViewGroup; 15 | import android.widget.Button; 16 | import android.widget.EditText; 17 | import android.widget.ImageView; 18 | import android.widget.Toast; 19 | 20 | import com.preethzcodez.ecommerceexample.MainActivity; 21 | import com.preethzcodez.ecommerceexample.R; 22 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 23 | import com.preethzcodez.ecommerceexample.database.SessionManager; 24 | import com.preethzcodez.ecommerceexample.interfaces.FinishActivity; 25 | import com.preethzcodez.ecommerceexample.pojo.User; 26 | import com.preethzcodez.ecommerceexample.utils.Constants; 27 | import com.preethzcodez.ecommerceexample.utils.Util; 28 | 29 | /** 30 | * Created by Preeth on 1/6/2018 31 | */ 32 | 33 | public class SignIn extends Fragment { 34 | 35 | Button signIn; 36 | EditText email, password; 37 | ImageView back, showpassword; 38 | boolean isPasswordShown = false; 39 | FinishActivity finishActivityCallback; 40 | 41 | @Override 42 | public void onAttach(Context context) { 43 | super.onAttach(context); 44 | finishActivityCallback = (FinishActivity) context; 45 | } 46 | 47 | @Nullable 48 | @Override 49 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 50 | // Inflate the layout for this fragment 51 | View view = inflater.inflate(R.layout.sign_in, container, false); 52 | 53 | setIds(view); 54 | setClickListeners(); 55 | 56 | return view; 57 | } 58 | 59 | // Set Ids 60 | private void setIds(View view) { 61 | email = view.findViewById(R.id.email); 62 | password = view.findViewById(R.id.password); 63 | signIn = view.findViewById(R.id.signin); 64 | back = view.findViewById(R.id.back); 65 | showpassword = view.findViewById(R.id.showpassword); 66 | } 67 | 68 | // Set Click Listeners 69 | private void setClickListeners() { 70 | // Sign In 71 | signIn.setOnClickListener(new View.OnClickListener() { 72 | @SuppressWarnings("ConstantConditions") 73 | @Override 74 | public void onClick(View view) { 75 | 76 | // Set Values To User Model 77 | User user = new User(); 78 | user.setEmail(email.getText().toString()); 79 | user.setPassword(password.getText().toString()); 80 | 81 | // Validate Fields 82 | if (user.getEmail().trim().length() > 0) { 83 | if (Util.isValidEmail(user.getEmail())) { 84 | if (user.getPassword().trim().length() > 0) { 85 | 86 | // Sign In User 87 | DB_Handler db_handler = new DB_Handler(getActivity()); 88 | user = db_handler.getUser(user.getEmail()); 89 | try { 90 | if (user.getEmail().trim().length() > 0) { 91 | // Save Session 92 | SessionManager sessionManager = new SessionManager(getActivity()); 93 | sessionManager.saveSession(Constants.SESSION_EMAIL, user.getEmail()); 94 | sessionManager.saveSession(Constants.SESSION_PASSWORD, user.getPassword()); 95 | 96 | // Load Main Activity 97 | Intent i = new Intent(getActivity(), MainActivity.class); 98 | startActivity(i); 99 | finishActivityCallback.finishActivity(); 100 | } else { 101 | showInvalidUser(); 102 | } 103 | } catch (NullPointerException e) { 104 | showInvalidUser(); 105 | } 106 | 107 | } else { 108 | showErrorToast(getActivity().getResources().getString(R.string.password)); 109 | } 110 | 111 | } else { 112 | showErrorToastEmailNotValid(); 113 | } 114 | } else { 115 | showErrorToast(getActivity().getResources().getString(R.string.email)); 116 | } 117 | } 118 | }); 119 | 120 | // Back Button Click 121 | back.setOnClickListener(new View.OnClickListener() { 122 | @SuppressWarnings("ConstantConditions") 123 | @Override 124 | public void onClick(View view) { 125 | FragmentManager fm = getActivity().getSupportFragmentManager(); 126 | FragmentTransaction ft = fm.beginTransaction(); 127 | ft.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right); 128 | ft.replace(R.id.fragment, new BlankFragment()); 129 | ft.addToBackStack(null); 130 | ft.commit(); 131 | } 132 | }); 133 | 134 | // Show / Hide Password 135 | showpassword.setOnClickListener(new View.OnClickListener() { 136 | @Override 137 | public void onClick(View view) { 138 | if (isPasswordShown) { 139 | password.setTransformationMethod(new PasswordTransformationMethod()); 140 | showpassword.setImageResource(R.drawable.ic_eye_off_grey600_24dp); 141 | isPasswordShown = false; 142 | } else { 143 | password.setTransformationMethod(null); 144 | showpassword.setImageResource(R.drawable.ic_eye_white_24dp); 145 | isPasswordShown = true; 146 | } 147 | } 148 | }); 149 | } 150 | 151 | // Show Error Toast 152 | private void showErrorToast(String value) { 153 | Toast.makeText(getActivity(), value + getResources().getString(R.string.BlankError), Toast.LENGTH_LONG).show(); 154 | } 155 | 156 | // Show Error Toast - Email Not Valid 157 | private void showErrorToastEmailNotValid() { 158 | Toast.makeText(getActivity(), R.string.EmailError, Toast.LENGTH_LONG).show(); 159 | } 160 | 161 | // Show Invalid User 162 | private void showInvalidUser() { 163 | Toast.makeText(getActivity(), R.string.InvalidUser, Toast.LENGTH_LONG).show(); 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/fragments/Subcategories.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.fragments; 2 | 3 | import android.content.Context; 4 | import android.os.Bundle; 5 | import android.support.annotation.NonNull; 6 | import android.support.annotation.Nullable; 7 | import android.support.v4.app.Fragment; 8 | import android.view.LayoutInflater; 9 | import android.view.View; 10 | import android.view.ViewGroup; 11 | import android.widget.GridView; 12 | import android.widget.TableLayout; 13 | 14 | import com.preethzcodez.ecommerceexample.R; 15 | import com.preethzcodez.ecommerceexample.adapters.SubcategoryGridAdapter; 16 | import com.preethzcodez.ecommerceexample.interfaces.ShowBackButton; 17 | import com.preethzcodez.ecommerceexample.interfaces.ToolbarTitle; 18 | import com.preethzcodez.ecommerceexample.pojo.Category; 19 | import com.preethzcodez.ecommerceexample.utils.Constants; 20 | 21 | import java.util.List; 22 | 23 | /** 24 | * Created by Preeth on 1/5/18 25 | */ 26 | 27 | public class Subcategories extends Fragment { 28 | 29 | ChildCategories childCategoriesCallback; 30 | ToolbarTitle toolbarTitleCallback; 31 | ShowBackButton showBackButtonCallback; 32 | 33 | // interface save child categories state 34 | public interface ChildCategories { 35 | void saveChildCategories(List childCategories); 36 | } 37 | 38 | @Nullable 39 | @Override 40 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 41 | 42 | // Inflate the layout for this fragment 43 | View view = inflater.inflate(R.layout.product_list, container, false); 44 | 45 | // Hide Filter Layout 46 | TableLayout sortFilter = view.findViewById(R.id.sortFilter); 47 | sortFilter.setVisibility(View.GONE); 48 | 49 | // get data 50 | Bundle args = getArguments(); 51 | assert args != null; 52 | List childCategories = (List) args.getSerializable(Constants.CAT_KEY); 53 | childCategoriesCallback.saveChildCategories(childCategories); 54 | 55 | // show back button 56 | showBackButtonCallback.showBackButton(); 57 | 58 | // set toolbar title 59 | toolbarTitleCallback.setToolbarTitle(args.getString(Constants.TITLE)); 60 | toolbarTitleCallback.saveSubcategoryTitle(args.getString(Constants.TITLE)); 61 | 62 | // fill gridview with data 63 | GridView gv = view.findViewById(R.id.productsGrid); 64 | assert childCategories != null; 65 | if (childCategories.size() >= 3) { 66 | gv.setNumColumns(3); 67 | } else if (childCategories.size() >= 2) { 68 | gv.setNumColumns(2); 69 | } else { 70 | gv.setNumColumns(1); 71 | } 72 | gv.setAdapter(new SubcategoryGridAdapter(getActivity(), childCategories)); 73 | 74 | return view; 75 | } 76 | 77 | @Override 78 | public void onAttach(Context context) { 79 | super.onAttach(context); 80 | childCategoriesCallback = (ChildCategories) context; 81 | toolbarTitleCallback = (ToolbarTitle) context; 82 | showBackButtonCallback = (ShowBackButton) context; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/fragments/WishList.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.fragments; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.ListView; 11 | 12 | import com.preethzcodez.ecommerceexample.R; 13 | import com.preethzcodez.ecommerceexample.adapters.WishlistAdapter; 14 | import com.preethzcodez.ecommerceexample.database.DB_Handler; 15 | import com.preethzcodez.ecommerceexample.database.SessionManager; 16 | import com.preethzcodez.ecommerceexample.pojo.Product; 17 | import com.preethzcodez.ecommerceexample.utils.Constants; 18 | 19 | import java.util.List; 20 | 21 | /** 22 | * Created by Preeth on 1/7/2018 23 | */ 24 | 25 | public class WishList extends Fragment { 26 | 27 | @Nullable 28 | @Override 29 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 30 | // Inflate the layout for this fragment 31 | View view = inflater.inflate(R.layout.listview, container, false); 32 | 33 | // get data 34 | DB_Handler db_handler = new DB_Handler(getActivity()); 35 | SessionManager sessionManager = new SessionManager(getActivity()); 36 | List productList = db_handler.getShortListedItems(sessionManager.getSessionData(Constants.SESSION_EMAIL)); 37 | 38 | // fill listview with data 39 | ListView listView= view.findViewById(R.id.listview); 40 | listView.setAdapter(new WishlistAdapter(getActivity(), productList)); 41 | return view; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/interfaces/FinishActivity.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.interfaces; 2 | 3 | /** 4 | * Created by Preeth on 1/7/2018 5 | */ 6 | 7 | // interface to call finish activity from fragment 8 | public interface FinishActivity { 9 | void finishActivity(); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/interfaces/ShowBackButton.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.interfaces; 2 | 3 | /** 4 | * Created by Preeth on 1/7/2018 5 | */ 6 | 7 | // interface to change back button visibility 8 | public interface ShowBackButton { 9 | void showBackButton(); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/interfaces/ToolbarTitle.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.interfaces; 2 | 3 | /** 4 | * Created by Preeth on 1/7/2018 5 | */ 6 | 7 | public interface ToolbarTitle { 8 | void setToolbarTitle(String toolbarTitle); 9 | void saveSubcategoryTitle(String toolbaTitle); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/Cart.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.pojo; 2 | 3 | /** 4 | * Created by Preeth on 1/3/2018 5 | */ 6 | 7 | public class Cart { 8 | 9 | private Integer id; 10 | private Integer itemQuantity; 11 | private Product product; 12 | private Variant variant; 13 | 14 | public Integer getId() { 15 | return id; 16 | } 17 | 18 | public void setId(Integer id) { 19 | this.id = id; 20 | } 21 | 22 | public Product getProduct() { 23 | return product; 24 | } 25 | 26 | public Variant getVariant() { 27 | return variant; 28 | } 29 | 30 | public void setProduct(Product product) { 31 | this.product = product; 32 | } 33 | 34 | public void setVariant(Variant variant) { 35 | this.variant = variant; 36 | } 37 | 38 | public Integer getItemQuantity() { 39 | return itemQuantity; 40 | } 41 | 42 | public void setItemQuantity(Integer itemQuantity) { 43 | this.itemQuantity = itemQuantity; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/Category.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.pojo; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | import com.google.gson.annotations.Expose; 6 | import com.google.gson.annotations.SerializedName; 7 | 8 | public class Category implements Serializable { 9 | 10 | @SerializedName("id") 11 | @Expose 12 | private Integer id; 13 | @SerializedName("name") 14 | @Expose 15 | private String name; 16 | @SerializedName("products") 17 | @Expose 18 | private List products = null; 19 | @SerializedName("child_categories") 20 | @Expose 21 | private List childCategories = null; 22 | 23 | public Integer getId() { 24 | return id; 25 | } 26 | 27 | public void setId(Integer id) { 28 | this.id = id; 29 | } 30 | 31 | public String getName() { 32 | return name; 33 | } 34 | 35 | public void setName(String name) { 36 | this.name = name; 37 | } 38 | 39 | public List getProducts() { 40 | return products; 41 | } 42 | 43 | public void setProducts(List products) { 44 | this.products = products; 45 | } 46 | 47 | public List getChildCategories() { 48 | return childCategories; 49 | } 50 | 51 | public void setChildCategories(List childCategories) { 52 | this.childCategories = childCategories; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/Product.java: -------------------------------------------------------------------------------- 1 | 2 | package com.preethzcodez.ecommerceexample.pojo; 3 | 4 | import java.io.Serializable; 5 | import java.util.List; 6 | import com.google.gson.annotations.Expose; 7 | import com.google.gson.annotations.SerializedName; 8 | 9 | public class Product implements Serializable { 10 | 11 | @SerializedName("id") 12 | @Expose 13 | private Integer id; 14 | @SerializedName("name") 15 | @Expose 16 | private String name; 17 | @SerializedName("date_added") 18 | @Expose 19 | private String dateAdded; 20 | @SerializedName("variants") 21 | @Expose 22 | private List variants = null; 23 | @SerializedName("tax") 24 | @Expose 25 | private Tax tax; 26 | @SerializedName("price_range") 27 | @Expose 28 | private String price_range; 29 | 30 | private Boolean isShortlisted = false; 31 | 32 | public Boolean getShortlisted() { 33 | return isShortlisted; 34 | } 35 | 36 | public void setShortlisted(Boolean shortlisted) { 37 | isShortlisted = shortlisted; 38 | } 39 | 40 | public Integer getId() { 41 | return id; 42 | } 43 | 44 | public void setId(Integer id) { 45 | this.id = id; 46 | } 47 | 48 | public String getName() { 49 | return name; 50 | } 51 | 52 | public void setName(String name) { 53 | this.name = name; 54 | } 55 | 56 | public String getDateAdded() { 57 | return dateAdded; 58 | } 59 | 60 | public void setDateAdded(String dateAdded) { 61 | this.dateAdded = dateAdded; 62 | } 63 | 64 | public List getVariants() { 65 | return variants; 66 | } 67 | 68 | public void setVariants(List variants) { 69 | this.variants = variants; 70 | } 71 | 72 | public Tax getTax() { 73 | return tax; 74 | } 75 | 76 | public void setTax(Tax tax) { 77 | this.tax = tax; 78 | } 79 | 80 | public String getPrice_range() { 81 | return price_range; 82 | } 83 | 84 | public void setPrice_range(String price_range) { 85 | this.price_range = price_range; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/ProductRank.java: -------------------------------------------------------------------------------- 1 | 2 | package com.preethzcodez.ecommerceexample.pojo; 3 | 4 | import com.google.gson.annotations.Expose; 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | public class ProductRank { 8 | 9 | @SerializedName("id") 10 | @Expose 11 | private Integer id; 12 | @SerializedName("view_count") 13 | @Expose 14 | private Integer viewCount; 15 | @SerializedName("order_count") 16 | @Expose 17 | private Integer orderCount; 18 | @SerializedName("shares") 19 | @Expose 20 | private Integer shares; 21 | 22 | public Integer getId() { 23 | return id; 24 | } 25 | 26 | public void setId(Integer id) { 27 | this.id = id; 28 | } 29 | 30 | public Integer getViewCount() { 31 | return viewCount; 32 | } 33 | 34 | public void setViewCount(Integer viewCount) { 35 | this.viewCount = viewCount; 36 | } 37 | 38 | public Integer getOrderCount() { 39 | return orderCount; 40 | } 41 | 42 | public void setOrderCount(Integer orderCount) { 43 | this.orderCount = orderCount; 44 | } 45 | 46 | public Integer getShares() { 47 | return shares; 48 | } 49 | 50 | public void setShares(Integer shares) { 51 | this.shares = shares; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/Ranking.java: -------------------------------------------------------------------------------- 1 | 2 | package com.preethzcodez.ecommerceexample.pojo; 3 | 4 | import java.util.List; 5 | import com.google.gson.annotations.Expose; 6 | import com.google.gson.annotations.SerializedName; 7 | 8 | public class Ranking { 9 | 10 | @SerializedName("ranking") 11 | @Expose 12 | private String ranking; 13 | @SerializedName("products") 14 | @Expose 15 | private List products = null; 16 | 17 | public String getRanking() { 18 | return ranking; 19 | } 20 | 21 | public void setRanking(String ranking) { 22 | this.ranking = ranking; 23 | } 24 | 25 | public List getProducts() { 26 | return products; 27 | } 28 | 29 | public void setProducts(List products) { 30 | this.products = products; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/ResponseJSON.java: -------------------------------------------------------------------------------- 1 | 2 | package com.preethzcodez.ecommerceexample.pojo; 3 | 4 | import java.util.List; 5 | import com.google.gson.annotations.Expose; 6 | import com.google.gson.annotations.SerializedName; 7 | 8 | public class ResponseJSON { 9 | 10 | @SerializedName("categories") 11 | @Expose 12 | private List categories = null; 13 | @SerializedName("rankings") 14 | @Expose 15 | private List rankings = null; 16 | 17 | public List getCategories() { 18 | return categories; 19 | } 20 | 21 | public void setCategories(List categories) { 22 | this.categories = categories; 23 | } 24 | 25 | public List getRankings() { 26 | return rankings; 27 | } 28 | 29 | public void setRankings(List rankings) { 30 | this.rankings = rankings; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/Tax.java: -------------------------------------------------------------------------------- 1 | 2 | package com.preethzcodez.ecommerceexample.pojo; 3 | 4 | import com.google.gson.annotations.Expose; 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | public class Tax { 8 | 9 | @SerializedName("name") 10 | @Expose 11 | private String name; 12 | @SerializedName("value") 13 | @Expose 14 | private Double value; 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | public void setName(String name) { 21 | this.name = name; 22 | } 23 | 24 | public Double getValue() { 25 | return value; 26 | } 27 | 28 | public void setValue(Double value) { 29 | this.value = value; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/User.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.pojo; 2 | 3 | /** 4 | * Created by Preeth on 1/6/2018. 5 | */ 6 | 7 | public class User { 8 | private String name; 9 | private String mobile; 10 | private String email; 11 | private String password; 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public void setName(String name) { 18 | this.name = name; 19 | } 20 | 21 | public String getMobile() { 22 | return mobile; 23 | } 24 | 25 | public void setMobile(String mobile) { 26 | this.mobile = mobile; 27 | } 28 | 29 | public String getEmail() { 30 | return email; 31 | } 32 | 33 | public void setEmail(String email) { 34 | this.email = email; 35 | } 36 | 37 | public String getPassword() { 38 | return password; 39 | } 40 | 41 | public void setPassword(String password) { 42 | this.password = password; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/pojo/Variant.java: -------------------------------------------------------------------------------- 1 | 2 | package com.preethzcodez.ecommerceexample.pojo; 3 | 4 | import com.google.gson.annotations.Expose; 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | public class Variant { 8 | 9 | @SerializedName("id") 10 | @Expose 11 | private Integer id; 12 | @SerializedName("color") 13 | @Expose 14 | private String color; 15 | @SerializedName("size") 16 | @Expose 17 | private Object size; 18 | @SerializedName("price") 19 | @Expose 20 | private String price; 21 | 22 | public Integer getId() { 23 | return id; 24 | } 25 | 26 | public void setId(Integer id) { 27 | this.id = id; 28 | } 29 | 30 | public String getColor() { 31 | return color; 32 | } 33 | 34 | public void setColor(String color) { 35 | this.color = color; 36 | } 37 | 38 | public Object getSize() { 39 | return size; 40 | } 41 | 42 | public void setSize(Object size) { 43 | this.size = size; 44 | } 45 | 46 | public String getPrice() { 47 | return price; 48 | } 49 | 50 | public void setPrice(String price) { 51 | this.price = price; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/utils/Constants.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.utils; 2 | 3 | /** 4 | * Created by Preeth on 1/4/18 5 | */ 6 | 7 | public class Constants { 8 | 9 | // App Base URL 10 | public static final String BASE_URL = "https://firebasestorage.googleapis.com/v0/b/e-shoppe-1aa36.appspot.com/o/"; 11 | 12 | // Bundle Argument Keys 13 | public static final String CAT_ID_KEY = "category_id"; 14 | public static final String CAT_KEY = "subcategories"; 15 | public static final String TITLE = "title"; 16 | 17 | // Session Key 18 | public static final String SESSION_EMAIL = "session_email"; 19 | public static final String SESSION_PASSWORD = "session_password"; 20 | 21 | // Fragment Tags 22 | public static final String FRAG_HOME = "HOME"; 23 | public static final String FRAG_SUBCAT = "SUB_CAT"; 24 | public static final String FRAG_PDT = "PRODUCTS"; 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/utils/ExpandableHeightGridView.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.utils; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.ViewGroup; 6 | import android.widget.GridView; 7 | 8 | /** 9 | * Created by Preeth on 1/4/2018. 10 | */ 11 | 12 | public class ExpandableHeightGridView extends GridView { 13 | 14 | boolean expanded = false; 15 | 16 | public ExpandableHeightGridView(Context context) { 17 | super(context); 18 | } 19 | 20 | public ExpandableHeightGridView(Context context, AttributeSet attrs) { 21 | super(context, attrs); 22 | } 23 | 24 | public ExpandableHeightGridView(Context context, AttributeSet attrs, int defStyle) { 25 | super(context, attrs, defStyle); 26 | } 27 | 28 | public boolean isExpanded() { 29 | return expanded; 30 | } 31 | 32 | @Override 33 | public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 34 | if (isExpanded()) { 35 | int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST); 36 | super.onMeasure(widthMeasureSpec, expandSpec); 37 | 38 | ViewGroup.LayoutParams params = getLayoutParams(); 39 | params.height = getMeasuredHeight(); 40 | } else { 41 | super.onMeasure(widthMeasureSpec, heightMeasureSpec); 42 | } 43 | } 44 | 45 | public void setExpanded(boolean expanded) { 46 | this.expanded = expanded; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/utils/Util.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.utils; 2 | 3 | import android.content.Context; 4 | import android.text.TextUtils; 5 | 6 | import com.preethzcodez.ecommerceexample.R; 7 | 8 | import java.net.ConnectException; 9 | import java.net.SocketTimeoutException; 10 | import java.net.UnknownHostException; 11 | import java.util.List; 12 | import java.util.Locale; 13 | 14 | /** 15 | * Created by Preeth on 1/5/18 16 | */ 17 | 18 | // Utilities Class 19 | public class Util { 20 | 21 | // Format Double Value To Remove Unnecessary Zero 22 | public static String formatDouble(double num) { 23 | if (num == (long) num) 24 | return String.format(Locale.US, "%d", (long) num); 25 | else 26 | return String.format(Locale.US, "%s", num); 27 | } 28 | 29 | // Get inClause String For Array Parameters In DB 30 | public static String getInClause(List array) { 31 | String inClause = array.toString(); 32 | 33 | //replace the brackets with parentheses 34 | inClause = inClause.replace("[", "("); 35 | inClause = inClause.replace("]", ")"); 36 | 37 | return inClause; 38 | } 39 | 40 | // Check email valid or not 41 | public static boolean isValidEmail(String email) { 42 | return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 43 | } 44 | 45 | // Get Error Message 46 | public static String getErrorMessage(Throwable t, Context context) { 47 | if (t instanceof SocketTimeoutException || t instanceof UnknownHostException || t instanceof ConnectException) { 48 | return context.getResources().getString(R.string.NoInternet); 49 | } else { 50 | return context.getResources().getString(R.string.Error500); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/webservice/RetrofitBuilder.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.webservice; 2 | 3 | import android.content.Context; 4 | 5 | import com.preethzcodez.ecommerceexample.utils.Constants; 6 | 7 | import java.util.concurrent.TimeUnit; 8 | 9 | import okhttp3.OkHttpClient; 10 | import retrofit2.Retrofit; 11 | import retrofit2.converter.gson.GsonConverterFactory; 12 | 13 | /** 14 | * Created by Preeth on 1/4/18 15 | */ 16 | 17 | public class RetrofitBuilder { 18 | 19 | private Context context; 20 | 21 | public RetrofitBuilder(Context context) { 22 | this.context = context; 23 | } 24 | 25 | public OkHttpClient setClient() { 26 | return new OkHttpClient.Builder() 27 | .connectTimeout(1, TimeUnit.MINUTES) 28 | .readTimeout(1, TimeUnit.MINUTES) 29 | .build(); 30 | } 31 | 32 | public Retrofit retrofitBuilder(OkHttpClient httpClient) { 33 | return new Retrofit.Builder() 34 | .baseUrl(Constants.BASE_URL) 35 | .addConverterFactory(GsonConverterFactory.create()) 36 | .client(httpClient) 37 | .build(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/preethzcodez/ecommerceexample/webservice/RetrofitInterface.java: -------------------------------------------------------------------------------- 1 | package com.preethzcodez.ecommerceexample.webservice; 2 | 3 | import com.preethzcodez.ecommerceexample.pojo.ResponseJSON; 4 | 5 | import retrofit2.Call; 6 | import retrofit2.http.GET; 7 | 8 | /** 9 | * Created by Preeth on 1/4/18 10 | */ 11 | 12 | public interface RetrofitInterface { 13 | 14 | // Method To Fetch Data From URL 15 | @GET("data.json?alt=media&token=0185eb39-c6f4-4f46-ab72-01936037d0db") 16 | Call fetchData(); 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/res/anim/enter_from_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/enter_from_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/exit_to_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/exit_to_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_account_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_account_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_cart_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_cart_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_chevron_down_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_chevron_down_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_chevron_right_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_chevron_right_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_close_circle_outline_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_close_circle_outline_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_close_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_close_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_eye_off_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_eye_off_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_eye_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_eye_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_filter_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_filter_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_heart_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_heart_grey.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_heart_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_heart_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_home_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_home_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_image_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_image_grey600_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_minus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_minus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_plus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_plus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_view_list_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-hdpi/ic_view_list_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_account_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_account_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_cart_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_cart_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_chevron_down_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_chevron_down_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_chevron_right_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_chevron_right_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_close_circle_outline_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_close_circle_outline_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_close_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_close_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_eye_off_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_eye_off_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_eye_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_eye_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_filter_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_filter_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_heart_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_heart_grey.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_heart_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_heart_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_home_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_home_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_image_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_image_grey600_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_minus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_minus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_plus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_plus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_view_list_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-mdpi/ic_view_list_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_account_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_account_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_cart_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_cart_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_chevron_down_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_chevron_down_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_chevron_right_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_chevron_right_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_close_circle_outline_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_close_circle_outline_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_close_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_close_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_eye_off_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_eye_off_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_eye_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_eye_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_filter_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_filter_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_heart_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_heart_grey.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_heart_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_heart_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_home_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_home_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_image_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_image_grey600_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_minus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_minus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_plus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_plus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_view_list_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xhdpi/ic_view_list_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_account_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_account_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_cart_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_cart_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_chevron_down_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_chevron_down_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_chevron_right_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_chevron_right_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_close_circle_outline_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_close_circle_outline_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_close_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_close_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_eye_off_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_eye_off_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_eye_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_eye_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_filter_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_filter_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_heart_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_heart_grey.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_heart_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_heart_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_home_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_home_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_image_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_image_grey600_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_minus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_minus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_plus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_plus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_view_list_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxhdpi/ic_view_list_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_account_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_account_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_cart_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_cart_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_chevron_down_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_chevron_down_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_close_circle_outline_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_close_circle_outline_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_close_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_close_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_eye_off_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_eye_off_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_eye_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_eye_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_filter_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_filter_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_heart_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_heart_grey.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_heart_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_heart_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_home_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_home_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_image_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_image_grey600_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_minus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_minus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_plus_circle_outline_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_plus_circle_outline_grey600_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_view_list_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preethzcodez/E-CommerceAndroidAppExample/d1e32db220aa3ab53db995b78beba701508d6a58/app/src/main/res/drawable-xxxhdpi/ic_view_list_grey600_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/blue_circle.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/border_blue.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/border_grey.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/group_indicator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_corner_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_corner_lightgrey.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_corner_yellow.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/yellow_circle.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/account.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 18 | 19 | 29 | 30 | 40 | 41 | 52 | 53 | 54 | 55 | 62 | 70 | 77 | 78 | 79 | 80 | 87 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 13 | 14 | 21 | 22 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 12 | 19 | 20 | 27 | 28 | 29 | 30 |