diff --git a/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java b/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java new file mode 100644 index 0000000..233463f --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java @@ -0,0 +1,34 @@ +package me.gilo.wc.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import me.gilo.wc.R; +import me.gilo.wc.adapter.viewholder.ProductViewHolder; +import me.gilo.woodroid.models.Product; + +import java.util.List; + +public class HomeProductAdapter extends RecyclerView.Adapter { + private List products; + + public HomeProductAdapter(List products) { + this.products = products; + } + + @Override + public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return new ProductViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_home_product_item, parent, false)); + } + + @Override + public void onBindViewHolder(ProductViewHolder holder, int position) { + holder.renderView(products.get(position)); + } + + + @Override + public int getItemCount() { + return products.size() == 0 ? 0 : products.size(); + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/viewholder/CategoryViewHolder.kt b/app/src/main/java/me/gilo/wc/adapter/viewholder/CategoryViewHolder.kt index 5b68544..f804788 100644 --- a/app/src/main/java/me/gilo/wc/adapter/viewholder/CategoryViewHolder.kt +++ b/app/src/main/java/me/gilo/wc/adapter/viewholder/CategoryViewHolder.kt @@ -1,11 +1,13 @@ package me.gilo.wc.adapter.viewholder import android.content.Context +import android.content.Intent import android.support.v7.widget.RecyclerView import android.text.Html import android.view.View import android.widget.TextView import me.gilo.wc.R +import me.gilo.wc.ui.product.ShopActivity import me.gilo.woodroid.models.Category class CategoryViewHolder(val context: Context, itemView: View) : @@ -18,12 +20,13 @@ class CategoryViewHolder(val context: Context, itemView: View) : tvTitle.text = category.name tvDescription.text = Html.fromHtml(category.description) -// itemView.setOnClickListener{ -// val intent = Intent(context, CouponActivity::class.java) -// intent.putExtra("couponId", coupon.id) -// -// context.startActivity(intent) -// } + itemView.setOnClickListener{ + val intent = Intent(context, ShopActivity::class.java) + intent.putExtra("categoryId",category.id) + intent.putExtra("name",category.name) + + context.startActivity(intent) + } } diff --git a/app/src/main/java/me/gilo/wc/ui/home/CategoryFragment.kt b/app/src/main/java/me/gilo/wc/ui/home/CategoryFragment.kt index ed7f5af..fba061d 100644 --- a/app/src/main/java/me/gilo/wc/ui/home/CategoryFragment.kt +++ b/app/src/main/java/me/gilo/wc/ui/home/CategoryFragment.kt @@ -59,6 +59,8 @@ class CategoryFragment : Fragment() { } private fun categories() { + + //TODO ('Exclude the uncategorized category') viewModel.categories().observe(this, android.arch.lifecycle.Observer { response -> when (response!!.status()) { Status.LOADING -> { diff --git a/app/src/main/java/me/gilo/wc/ui/home/HomeFragment.kt b/app/src/main/java/me/gilo/wc/ui/home/HomeFragment.kt index 6bdbd6b..cfb6533 100644 --- a/app/src/main/java/me/gilo/wc/ui/home/HomeFragment.kt +++ b/app/src/main/java/me/gilo/wc/ui/home/HomeFragment.kt @@ -2,11 +2,18 @@ package me.gilo.wc.ui.home import android.os.Bundle import android.support.v4.app.Fragment +import android.support.v7.widget.LinearLayoutManager import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import kotlinx.android.synthetic.main.fragment_home.* import me.gilo.wc.R +import me.gilo.wc.adapter.HomeProductAdapter +import me.gilo.wc.common.Status import me.gilo.wc.viewmodels.ProductViewModel +import me.gilo.woodroid.models.Product +import me.gilo.woodroid.models.filters.ProductFilter +import java.util.* class HomeFragment : Fragment() { @@ -15,6 +22,12 @@ class HomeFragment : Fragment() { lateinit var viewModel: ProductViewModel val TAG = "HomeFragment" + lateinit var adapter: HomeProductAdapter + private lateinit var products: ArrayList + + lateinit var hoodieAdapter: HomeProductAdapter + private lateinit var hoodieProducts: ArrayList + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { @@ -22,9 +35,11 @@ class HomeFragment : Fragment() { } } - override fun onCreateView(inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?): View { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { return inflater.inflate(R.layout.fragment_home, container, false) } @@ -32,17 +47,115 @@ class HomeFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + viewModel = (activity as HomeActivity).getViewModel(ProductViewModel::class.java) + + setUpProducts() + setUpHoodies() } + private fun setUpProducts() { + val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false) + rvShop.layoutManager = layoutManager + rvShop.isNestedScrollingEnabled = false + + products = ArrayList() + + adapter = HomeProductAdapter(products) + rvShop.adapter = adapter + + products() + } + + + private fun setUpHoodies() { + val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false) + + rvHoodies.layoutManager = layoutManager + rvHoodies.isNestedScrollingEnabled = false + + hoodieProducts = ArrayList() + + hoodieAdapter = HomeProductAdapter(hoodieProducts) + rvHoodies.adapter = hoodieAdapter + + + val filter = ProductFilter() + filter.category = 21 + products(filter) + } + + companion object { @JvmStatic fun newInstance() = - HomeFragment().apply { - arguments = Bundle().apply { + HomeFragment().apply { + arguments = Bundle().apply { - } } + } + } + + private fun products() { + viewModel.products().observe(this, android.arch.lifecycle.Observer { response -> + when (response!!.status()) { + Status.LOADING -> { + + } + + Status.SUCCESS -> { + products.clear() + val productsResponse = response.data() + for (product in productsResponse) { + products.add(product) + } + + adapter.notifyDataSetChanged() + + } + + Status.ERROR -> { + + } + + Status.EMPTY -> { + + } + } + + }) + + } + + private fun products(filter: ProductFilter) { + viewModel.products(filter).observe(this, android.arch.lifecycle.Observer { response -> + when (response!!.status()) { + Status.LOADING -> { + } + + Status.SUCCESS -> { + hoodieProducts.clear() + + val productsResponse = response.data() + for (product in productsResponse) { + hoodieProducts.add(product) + } + + hoodieAdapter.notifyDataSetChanged() + + } + + Status.ERROR -> { + + + } + + Status.EMPTY -> { + + } + } + + }) } } diff --git a/app/src/main/java/me/gilo/wc/ui/product/ShopActivity.kt b/app/src/main/java/me/gilo/wc/ui/product/ShopActivity.kt index c574d0e..5d57f49 100644 --- a/app/src/main/java/me/gilo/wc/ui/product/ShopActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/product/ShopActivity.kt @@ -3,13 +3,11 @@ package me.gilo.wc.ui.product import android.content.Context import android.os.Bundle import android.support.v4.view.GravityCompat -import android.support.v7.widget.GridLayoutManager import android.view.Menu import android.view.MenuItem import android.widget.Toast import io.github.inflationx.viewpump.ViewPumpContextWrapper import kotlinx.android.synthetic.main.activity_shop.* -import kotlinx.android.synthetic.main.content_shop.* import kotlinx.android.synthetic.main.drawer_filter.* import me.gilo.wc.R import me.gilo.wc.adapter.ProductAdapter @@ -43,19 +41,22 @@ class ShopActivity : BaseActivity() { title = "Shop" - val layoutManager = GridLayoutManager(baseContext, 2) - rvShop.layoutManager = layoutManager - rvShop.isNestedScrollingEnabled = false - products = ArrayList() - adapter = ProductAdapter(products) - rvShop.adapter = adapter - products() cart() bFilter.setOnClickListener{filter()} + + if(intent.hasExtra("categoryId")){ + val filter = ProductFilter() + filter.category = intent.getIntExtra("categoryId", 0) + products(filter) + + title = intent.getStringExtra("name") + }else{ + products() + } } private fun filter() { @@ -125,7 +126,6 @@ class ShopActivity : BaseActivity() { Status.SUCCESS -> { val cartResponse = response.data() - toast("Cart items are " + cartResponse.size) } Status.ERROR -> { diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 4e6d0be..e909d1b 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -12,59 +12,77 @@ - + - + - - + + + + + + + + + + - diff --git a/app/src/main/res/layout/single_home_product_item.xml b/app/src/main/res/layout/single_home_product_item.xml new file mode 100644 index 0000000..b4232c4 --- /dev/null +++ b/app/src/main/res/layout/single_home_product_item.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/woodroid/src/main/java/me/gilo/woodroid/models/filters/ProductFilter.java b/woodroid/src/main/java/me/gilo/woodroid/models/filters/ProductFilter.java index 876175c..2a4b6aa 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/models/filters/ProductFilter.java +++ b/woodroid/src/main/java/me/gilo/woodroid/models/filters/ProductFilter.java @@ -1,8 +1,5 @@ package me.gilo.woodroid.models.filters; -import java.util.HashMap; -import java.util.Map; - public class ProductFilter extends ListFilter{ private int[] parent; private int[] parent_exclude; @@ -11,7 +8,7 @@ public class ProductFilter extends ListFilter{ private String type; private String sku; private boolean featured; - private String category; + private int category; private String tag; private String shipping_class; private String attribute; @@ -96,11 +93,11 @@ public class ProductFilter extends ListFilter{ addFilter("featured", featured); } - public String getCategory() { + public int getCategory() { return category; } - public void setCategory(String category) { + public void setCategory(int category) { this.category = category; addFilter("category", category);