pizza row

This commit is contained in:
2017-09-23 00:20:36 +03:00
parent 446ae5c72a
commit d4f7ea2de0
14 changed files with 252 additions and 119 deletions

View File

@@ -1,11 +1,18 @@
package ch.pizzalink.android.adapter.recycler;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.ArrayList;
@@ -23,41 +30,49 @@ import ch.pizzalink.android.model.PizzaModel;
* Created by cimenmus on 20/09/2017.
*/
public class PizzaRecyclerAdapter extends RecyclerView.Adapter<PizzaRecyclerAdapter.ViewHolder> {
public class PizzaRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private ArrayList<PizzaModel> pizzaList;
private final int HOLDER_PIZZA = 0;
private final int HOLDER_SPACE = 1;
private ArrayList<PizzaModel> pizzaList = new ArrayList<>();
private RecyclerItemClickListener recyclerItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder{
public static class PizzaViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.pizzaNameTextView) TextView pizzaNameTextView;
@BindView(R.id.pizzaImageView) ImageView pizzaImageView;
@BindView(R.id.pizzaIngredientsTextView) TextView pizzaIngredientsTextView;
@BindView(R.id.pizzaBottomLayout) LinearLayout pizzaBottomLayout;
@BindView(R.id.expandBottomLayoutImageView) ImageView expandBottomLayoutImageView;
@BindView(R.id.collapseBottomLayoutImageView) ImageView collapseBottomLayoutImageView;
public ViewHolder(final View view, final RecyclerItemClickListener recyclerItemClickListener) {
public PizzaViewHolder(final View view, final RecyclerItemClickListener recyclerItemClickListener) {
super(view);
ButterKnife.bind(this, view);
/*
favoriteOfferImageView.setClickable(true);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
public void onClick(View view) {
if(recyclerItemClickListener != null)
recyclerItemClickListener.onItemClick(view, getAdapterPosition());
recyclerItemClickListener.onItemClick(pizzaBottomLayout, getAdapterPosition());
}
});
favoriteOfferImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(recyclerItemClickListener != null)
recyclerItemClickListener.onItemClick(favoriteOfferImageView, getAdapterPosition());
}
});
*/
}
}
public static class SpaceViewHolder extends RecyclerView.ViewHolder{
public SpaceViewHolder(final View view) {
super(view);
}
}
@Override
public int getItemViewType(int position) {
if(position == pizzaList.size())
return HOLDER_SPACE;
return HOLDER_PIZZA;
}
public PizzaRecyclerAdapter(ArrayList<PizzaModel> pizzaList, RecyclerItemClickListener recyclerItemClickListener){
@@ -66,22 +81,68 @@ public class PizzaRecyclerAdapter extends RecyclerView.Adapter<PizzaRecyclerAdap
}
@Override
public PizzaRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View root = LayoutInflater.from(BaseActivity.currentActivity).inflate(R.layout.row_pizza_2, viewGroup, false);
return new PizzaRecyclerAdapter.ViewHolder(root, recyclerItemClickListener);
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
RecyclerView.ViewHolder viewHolder;
View view;
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
switch (viewType){
case HOLDER_PIZZA:
view = inflater.inflate(R.layout.row_pizza_2, viewGroup, false);
viewHolder = new PizzaViewHolder(view, recyclerItemClickListener);
break;
case HOLDER_SPACE:
view = inflater.inflate(R.layout.row_space, viewGroup, false);
viewHolder = new SpaceViewHolder(view);
break;
default:
view = inflater.inflate(R.layout.row_pizza_2, viewGroup, false);
viewHolder = new PizzaViewHolder(view, recyclerItemClickListener);
break;
}
return viewHolder;
}
@Override
public void onBindViewHolder(PizzaRecyclerAdapter.ViewHolder holder, int position) {
holder.pizzaNameTextView.setText("Anatolia");
holder.pizzaIngredientsTextView.setText("Mozzarella, Artischocken, Pilze, Peperoni, Oliven, Oregano");
ImageLoadHelper.loadImage(holder.pizzaImageView, "http://www.pizzalink.ch/pizza/image/cache/catalog/pizza/2-220x220.png");
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()){
case HOLDER_PIZZA :
PizzaViewHolder pizzaViewHolder = (PizzaViewHolder) holder;
pizzaViewHolder.pizzaNameTextView.setText("Anatolia");
pizzaViewHolder.pizzaIngredientsTextView.setText("Mozzarella, Artischocken, Pilze, Peperoni, Oliven, Oregano");
ImageLoadHelper.loadImage(pizzaViewHolder.pizzaImageView, "http://www.pizzalink.ch/pizza/image/cache/catalog/pizza/2-220x220.png");
if(pizzaList.get(position).isExpanded()){
pizzaViewHolder.expandBottomLayoutImageView.setVisibility(View.GONE);
pizzaViewHolder.collapseBottomLayoutImageView.setVisibility(View.VISIBLE);
pizzaViewHolder.pizzaBottomLayout.setVisibility(View.VISIBLE);
}
else{
pizzaViewHolder.expandBottomLayoutImageView.setVisibility(View.VISIBLE);
pizzaViewHolder.collapseBottomLayoutImageView.setVisibility(View.GONE);
pizzaViewHolder.pizzaBottomLayout.setVisibility(View.GONE);
}
break;
case HOLDER_SPACE :
SpaceViewHolder spaceViewHolder = (SpaceViewHolder) holder;
break;
}
}
@Override
public int getItemCount() {
//return pizzaList.size();
return 12;
return pizzaList.size() + 1 ;
}
}
}

View File

@@ -57,6 +57,7 @@ public class PizzaFragment extends OrderBaseFragment {
private void initViews(){
setPizzalinkToolbarFields(true, fragmentTitle);
initRecyclerView();
fillPizzaList();
}
private void initRecyclerView(){
@@ -69,7 +70,18 @@ public class PizzaFragment extends OrderBaseFragment {
pizzaRecyclerAdapter = new PizzaRecyclerAdapter(pizzaList, new RecyclerItemClickListener() {
@Override
public void onItemClick(View view, int position) {
switch (view.getId()){
default:
for(int i = 0; i < pizzaList.size(); i++){
if(i == position && !pizzaList.get(i).isExpanded())
pizzaList.get(i).setExpanded(true);
else
pizzaList.get(i).setExpanded(false);
}
pizzaRecyclerAdapter.notifyDataSetChanged();
pizzaRecyclerView.scrollToPosition(position);
break;
}
}
});
LinearLayoutManager layoutManager = new LinearLayoutManager(BaseActivity.currentActivity);
@@ -77,4 +89,11 @@ public class PizzaFragment extends OrderBaseFragment {
pizzaRecyclerView.setAdapter(pizzaRecyclerAdapter);
}
private void fillPizzaList(){
for(int i = 0; i < 12; i++){
pizzaList.add(new PizzaModel());
}
pizzaRecyclerAdapter.notifyDataSetChanged();
}
}

View File

@@ -13,6 +13,7 @@ public class PizzaModel {
private double price;
private boolean isInCart;
private ArrayList<SizeModel> pizzaSizeList;
private boolean isExpanded;
public String getId() {
return id;
@@ -77,4 +78,12 @@ public class PizzaModel {
public void setPizzaSizeList(ArrayList<SizeModel> pizzaSizeList) {
this.pizzaSizeList = pizzaSizeList;
}
public boolean isExpanded() {
return isExpanded;
}
public void setExpanded(boolean expanded) {
isExpanded = expanded;
}
}

View File

@@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="212.982"
android:viewportWidth="212.982" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#ec1649" android:pathData="M131.8,106.49l75.94,-75.94c6.99,-6.99 6.99,-18.32 0,-25.31c-6.99,-6.99 -18.32,-6.99 -25.31,0l-75.94,75.94L30.55,5.24c-6.99,-6.99 -18.32,-6.99 -25.31,0c-6.99,6.99 -6.99,18.32 0,25.31l75.94,75.94L5.24,182.43c-6.99,6.99 -6.99,18.32 0,25.31c6.99,6.99 18.32,6.99 25.31,0l75.94,-75.94l75.94,75.94c6.99,6.99 18.32,6.99 25.31,0c6.99,-6.99 6.99,-18.32 0,-25.31L131.8,106.49z"/>
</vector>

View File

@@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="612.0"
android:viewportWidth="612.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M306,0C137,0 0,137 0,306s137,306 306,306s306,-137 306,-306S475,0 306,0zM306,573.8C158.1,573.8 38.3,453.9 38.3,306C38.3,158.1 158.1,38.3 306,38.3c147.9,0 267.8,119.9 267.8,267.8C573.8,453.9 453.9,573.8 306,573.8zM420.8,286.9h-229.5c-10.6,0 -19.1,8.6 -19.1,19.1c0,10.6 8.6,19.1 19.1,19.1h229.5c10.6,0 19.1,-8.6 19.1,-19.1C439.9,295.4 431.3,286.9 420.8,286.9z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:viewportHeight="64.0"
android:viewportWidth="64.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#1D1D1B" android:pathData="m46.55,30.12h-28.28c-1.11,0 -2,0.9 -2,2s0.89,2 2,2h28.28c1.11,0 2,-0.9 2,-2s-0.89,-2 -2,-2z"/>
<path android:fillColor="#1D1D1B" android:pathData="M32,0C14.35,0 0,14.35 0,32s14.35,32 32,32s32,-14.35 32,-32S49.65,0 32,0zM32,60C16.56,60 4,47.44 4,32S16.56,4 32,4s28,12.56 28,28S47.44,60 32,60z"/>
</vector>

View File

@@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="256.0"
android:viewportWidth="256.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#EC1649" android:pathData="M225.81,48.91l-97.81,97.81l-97.81,-97.81l-30.19,30.19l128,128l128,-128z"/>
</vector>

View File

@@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="612.0"
android:viewportWidth="612.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M306,0C137,0 0,137 0,306s137,306 306,306s306,-137 306,-306S475,0 306,0zM306,573.8C158.1,573.8 38.3,453.9 38.3,306C38.3,158.1 158.1,38.3 306,38.3c147.9,0 267.8,119.9 267.8,267.8C573.8,453.9 453.9,573.8 306,573.8zM420.8,286.9h-95.6V191.3c0,-10.6 -8.6,-19.1 -19.1,-19.1c-10.6,0 -19.1,8.6 -19.1,19.1v95.6H191.3c-10.6,0 -19.1,8.6 -19.1,19.1c0,10.6 8.6,19.1 19.1,19.1h95.6v95.6c0,10.6 8.6,19.1 19.1,19.1c10.6,0 19.1,-8.6 19.1,-19.1v-95.6h95.6c10.6,0 19.1,-8.6 19.1,-19.1C439.9,295.4 431.3,286.9 420.8,286.9z"/>
</vector>

View File

@@ -4,4 +4,5 @@
android:id="@+id/pizzaRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/actvity_default_background_color_1"
android:scrollbars="vertical"/>

View File

@@ -67,7 +67,7 @@
android:paddingRight="4dp"
android:paddingEnd="4dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_up" />
android:src="@drawable/ic_up_black" />
<TextView
android:id="@+id/pizzaCountTextView"
@@ -87,7 +87,7 @@
android:padding="4dp"
android:layout_margin="4dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_down"/>
android:src="@drawable/ic_down_black"/>
</LinearLayout>

View File

@@ -7,14 +7,18 @@
android:layout_height="wrap_content"
android:background="@color/white"
app:cardCornerRadius="4dp"
android:layout_margin="12dp">
android:layout_marginTop="12dp"
android:layout_marginLeft="12dp"
android:layout_marginStart="12dp"
android:layout_marginRight="12dp"
android:layout_marginEnd="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
@@ -26,6 +30,7 @@
android:layout_gravity="center_horizontal" />
<LinearLayout
android:id="@+id/pizzaIngredientsLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/pizzaImageView"
@@ -56,62 +61,33 @@
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/expandBottomLayoutImageView"
android:layout_width="32dp"
android:layout_height="32dp"
android:padding="8dp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/pizzaIngredientsLayout"
android:src="@drawable/ic_down_red"/>
<RelativeLayout
</RelativeLayout>
<LinearLayout
android:id="@+id/pizzaBottomLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/pizzaPriceLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerInParent="true">
<TextView
android:id="@+id/pizzaPriceTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:text="CHF 25.00"
android:textStyle="bold"
android:textSize="16sp"
android:layout_gravity="center_horizontal"/>
<Button
android:id="@+id/addPizzaToCartTextView"
android:layout_width="match_parent"
android:layout_height="36dp"
android:layout_margin="12dp"
style="@style/AddCartButton"
android:layout_gravity="center_horizontal"
android:text="Add" />
</LinearLayout>
</RelativeLayout>
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="visible">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/pizzaPriceLayout"
android:layout_toStartOf="@+id/pizzaPriceLayout"
android:layout_centerVertical="true">
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerInParent="true">
android:layout_centerVertical="true">
<LinearLayout
android:layout_width="wrap_content"
@@ -228,54 +204,95 @@
</LinearLayout>
<LinearLayout
android:id="@+id/pizzaCountLayout"
</LinearLayout>
<LinearLayout
android:id="@+id/pizzaCountLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingLeft="8dp"
android:paddingStart="8dp"
android:paddingRight="8dp"
android:paddingEnd="8dp"
android:layout_centerVertical="true">
<ImageView
android:id="@+id/increasePizzaCountTextView"
android:layout_width="36dp"
android:layout_height="36dp"
android:padding="8dp"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_increase"
android:layout_marginRight="4dp"
android:layout_marginEnd="4dp"/>
<TextView
android:id="@+id/pizzaCountTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingLeft="8dp"
android:paddingStart="8dp"
android:paddingRight="8dp"
android:paddingEnd="8dp"
android:layout_gravity="center_vertical">
<ImageView
android:id="@+id/increasePizzaCountTextView"
android:layout_width="32dp"
android:layout_height="32dp"
android:padding="8dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_up" />
<TextView
android:id="@+id/pizzaCountTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:textStyle="bold"
android:layout_marginTop="4dp"
android:layout_gravity="center_horizontal"
android:textColor="@color/black"/>
<ImageView
android:id="@+id/deccreasePizzaCountTextView"
android:layout_width="32dp"
android:layout_height="32dp"
android:padding="8dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_down"/>
</LinearLayout>
android:text="1"
android:textSize="18sp"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:textColor="@color/black"/>
<ImageView
android:id="@+id/deccreasePizzaCountTextView"
android:layout_width="36dp"
android:layout_height="36dp"
android:padding="8dp"
android:layout_marginLeft="4dp"
android:layout_marginStart="4dp"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_decrease"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/pizzaPriceTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:text="CHF 25.00"
android:textStyle="bold"
android:textSize="18sp"
android:padding="12dp"
android:layout_gravity="center_horizontal"/>
<Button
android:id="@+id/addPizzaToCartTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginStart="12dp"
android:layout_marginRight="12dp"
android:layout_marginEnd="12dp"
style="@style/AddCartButton"
android:layout_gravity="center_vertical"
android:text="Add to Cart" />
<ImageView
android:id="@+id/collapseBottomLayoutImageView"
android:layout_width="32dp"
android:layout_height="32dp"
android:padding="10dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_cancel"
android:visibility="visible"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.Space
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="96dp" />