Post Top Ad

Post Top Ad

Wednesday 11 March 2020

How to design Rider Delivery Screen



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


           <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="@dimen/text_size_smaller"
            android:layout_marginBottom="@dimen/text_size_smaller">

        <Button
            android:id="@+id/df_all_item_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="All (13)"
            android:paddingRight="@dimen/text_size_medium_small"
            android:paddingLeft="@dimen/text_size_medium_small"
            android:fontFamily="@font/source_sans_pro_regular"
            android:layout_marginLeft="@dimen/text_size_medium_small"
            android:background="@drawable/list_border"/>

        <Button
            android:id="@+id/df_preparing_item_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Preparing (13)"
            android:paddingRight="@dimen/text_size_medium_small"
            android:paddingLeft="@dimen/text_size_medium_small"
            android:fontFamily="@font/source_sans_pro_regular"
            android:layout_marginLeft="@dimen/text_size_medium_small"
            android:background="@drawable/list_border"/>

        <Button
            android:id="@+id/df_ready_item_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Ready (13)"
            android:paddingRight="@dimen/text_size_medium_small"
            android:paddingLeft="@dimen/text_size_medium_small"
            android:fontFamily="@font/source_sans_pro_regular"
            android:layout_marginLeft="@dimen/text_size_medium_small"
            android:background="@drawable/list_border"/>

        <Button
            android:id="@+id/df_out_for_delivery_item_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Out for delivery (13)"
            android:paddingRight="@dimen/text_size_medium_small"
            android:paddingLeft="@dimen/text_size_medium_small"
            android:fontFamily="@font/source_sans_pro_regular"
            android:layout_marginLeft="@dimen/text_size_medium_small"
            android:background="@drawable/list_border"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height=".5dp"
        android:background="@color/silver"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
<!--        <LinearLayout-->
<!--            android:layout_width="0dp"-->
<!--            android:layout_height="match_parent"-->
<!--            android:layout_weight="1">-->

<!--            <include layout="@layout/delivery_order_state_selector"-->
<!--        </LinearLayout>-->

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/delivery_order_selector_rv"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"/>

        <LinearLayout
            android:layout_width=".5dp"
            android:layout_height="match_parent"
            android:background="@color/silver"/>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="4"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1.7"
                android:layout_gravity="center"
                android:gravity="center"
                android:paddingTop="@dimen/text_size_small"
                android:paddingBottom="@dimen/text_size_small"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/deliveryAtTv"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:textColor="@color/black"
                    android:textSize="@dimen/text_size_medium_small"
                    android:fontFamily="@font/source_sans_pro_regular"
                    android:text="Delivery At: "/>

                <TextView
                    android:id="@+id/deliveryAmountTv"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:textColor="@color/black"
                    android:textSize="@dimen/text_size_medium_small"
                    android:fontFamily="@font/source_sans_pro_regular"
                    android:layout_marginLeft="@dimen/text_size_extra_large"
                    android:text="Delivery At: "/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height=".5dp"
                android:background="@color/silver"/>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="2.6"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/menu_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:paddingTop="@dimen/text_size_small"
                    android:paddingBottom="@dimen/text_size_small"
                    android:textSize="@dimen/text_size_medium_small"
                    android:textColor="@color/black"
                    android:fontFamily="@font/source_sans_pro_regular"
                    android:text=""/>

                <TextView
                    android:id="@+id/message"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/black"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:textSize="@dimen/text_size_medium_small"
                    android:fontFamily="@font/source_sans_pro_regular"
                    android:text=""/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height=".5dp"
                android:background="@color/silver"/>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="4.3"
                android:orientation="horizontal">

                <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                  android:layout_weight="1"
                    android:layout_marginLeft="@dimen/text_size_extra_large"
                    android:layout_marginRight="@dimen/text_size_extra_large"
                    android:orientation="vertical">


                    <TextView
                        android:id="@+id/deliveryPickUpTime"
                        style="?android:attr/spinnerStyle"
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:paddingRight="@dimen/text_size_medium_small"
                        android:paddingLeft="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Select rider pickup time  "
                        android:textColor="@color/black"
                        android:textSize="@dimen/text_size_medium_small" />

                    <TextView
                        android:id="@+id/deliveryPickUpTimeshow"
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:visibility="gone"
                        android:gravity="center"
                        android:paddingRight="@dimen/text_size_medium_small"
                        android:paddingLeft="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Select rider pickup time  "
                        android:textColor="@color/black"
                        android:textSize="@dimen/text_size_medium_small" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:gravity="center"
                        android:layout_marginBottom="@dimen/text_size_small"
                        android:layout_marginTop="@dimen/text_size_small"
                        android:layout_weight="1.5">
                    <Button
                        android:id="@+id/deliveryStatusChangeBtn"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:layout_gravity="center"
                        android:text="Preparing (13)"
                        android:textColor="@color/white"
                        android:paddingRight="@dimen/text_size_medium_small"
                        android:paddingLeft="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:background="@drawable/list_border"/>
                    </LinearLayout>

                </LinearLayout>

                <LinearLayout
                    android:layout_width=".5dp"
                    android:layout_height="match_parent"
                    android:background="@color/silver"/>
                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center_vertical"
                    android:padding="@dimen/text_size_medium_small"
                    android:orientation="vertical">
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textSize="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Customer details: "/>

                    <TextView
                        android:id="@+id/customerNameTV"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textColor="@color/black"
                        android:textSize="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Customer details: "/>

                    <TextView
                        android:id="@+id/customerphoneNumberTV"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textColor="@color/black"
                        android:textSize="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Customer details: "/>
                    <TextView
                        android:id="@+id/customerAddressTV"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textColor="@color/black"
                        android:textSize="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Customer details: "/>
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height=".5dp"
                android:background="@color/silver"/>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="3.5"
                android:paddingTop="@dimen/text_size_small"
                android:paddingBottom="@dimen/text_size_small"
                android:orientation="horizontal">

                <LinearLayout
                    android:id="@+id/riderDetailsLL"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:orientation="horizontal">

                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:orientation="vertical"
                        android:gravity="center_vertical"
                        android:paddingLeft="@dimen/text_size_medium_small">

                        <TextView
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textSize="@dimen/text_size_medium_small"
                            android:fontFamily="@font/source_sans_pro_regular"
                            android:text="Rider details: "/>

                        <TextView
                            android:id="@+id/riderNameTV"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textColor="@color/black"
                            android:textSize="@dimen/text_size_medium_small"
                            android:fontFamily="@font/source_sans_pro_regular"
                            android:text="Rider details: "/>

                        <TextView
                            android:id="@+id/riderphoneNumberTV"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textColor="@color/black"
                            android:textSize="@dimen/text_size_medium_small"
                            android:fontFamily="@font/source_sans_pro_regular"
                            android:text="Rider details: "/>

                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:gravity="center_horizontal|bottom"
                        android:layout_weight="1">

                        <TextView
                            android:id="@+id/trackRiderBtn"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Track rider"
                            android:textColor="@color/black"
                            android:paddingRight="@dimen/text_size_medium_small"
                            android:paddingLeft="@dimen/text_size_medium_small"
                            android:paddingBottom="5dp"
                            android:paddingTop="5dp"
                            android:textAllCaps="true"
                            android:layout_marginBottom="5dp"
                            android:fontFamily="@font/source_sans_pro_regular"
                            android:background="@drawable/list_border"/>

                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:layout_width=".5dp"
                    android:layout_height="match_parent"
                    android:layout_marginTop="@dimen/text_size_medium_small"
                    android:layout_marginBottom="@dimen/text_size_medium_small"
                    android:background="@color/silver"/>
                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/orderDetailsTV"
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:layout_gravity="center"
                        android:textColor="@color/text_color_active_blue"
                        android:textSize="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Order details "/>

                    <TextView
                        android:id="@+id/cancelOrderTV"
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:layout_gravity="center"
                        android:textColor="@color/silver"
                        android:textSize="@dimen/text_size_medium_small"
                        android:fontFamily="@font/source_sans_pro_regular"
                        android:text="Cancel order "/>

                </LinearLayout>

            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height=".5dp"
                android:background="@color/silver"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>


2.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/deliveryItemLL">
    <TextView
        android:id="@+id/deliveryItemOrderNoTv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:padding="7dp"
        android:textColor="@color/black"
        android:fontFamily="@font/source_sans_pro_regular"
        android:text="ORDER# 3213"/>

    <TextView
        android:id="@+id/deliveryItemOrderStatusBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center"
        android:paddingLeft="@dimen/text_size_medium_small"
        android:paddingRight="@dimen/text_size_medium_small"
        android:paddingTop="3dp"
        android:paddingBottom="3dp"
        android:textColor="@color/white"
        android:clickable="false"
        android:textAllCaps="true"
        android:gravity="center"
        android:background="@color/bg_new_order"
        android:focusable="false"
        android:text="new Order"/>

    <TextView
        android:id="@+id/deliveryItemOrderPinTv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:padding="7dp"
        android:textColor="@color/black"
        android:fontFamily="@font/source_sans_pro_regular"
        android:text="PIN: 525"
        android:textStyle="bold" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height=".5dp"
        android:background="@color/silver"/>
</LinearLayout>


Sourse code:

import android.app.TimePickerDialog;
import android.os.Bundle;
import android.text.InputType;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import com.dfoe.frimaster.FragmentForDashBorad.InventryViewHistry.CustomListAdapter.ViewHolder;
import com.dfoe.frimaster.R;
import com.dfoe.frimaster.modals.OrderDetailsData;
import com.dfoe.frimaster.util.UtilConstants;

import java.util.ArrayList;
import java.util.Calendar;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import okhttp3.internal.Util;

public class DeliveryFragment extends Fragment {


    RecyclerView deliveryOrderList;

    DeliveryOrderItemsAdapter mDeliveryOrderItemsAdapter;
    ArrayList<OrderDetailsData> mOrderDetails;

    int visibleorderPosition = 0;
    int orderStatusFilterval = -1;

    TextView deliveryAtTv, amountPaidTv, riderPickUpTimeTv, customerNameTV, customerPhoneNumberTV, customerAddressTV,menu_name,message,deliveryPickUpTimeshow;
    Button orderStatusChangingBtn;

    TextView riderNameTV, riderPhoneNumberTV;
    LinearLayout riderDetailsLL;

    Button orderStatusAllBtn, orderStatusPreparingBtn, orderStatusReadyBtn, orderStatusOutForDeliveryBtn;

    TimePickerDialog picker;

    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable    @Override    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View v = inflater.inflate(R.layout.fragment_delivery, null);

        deliveryAtTv = v.findViewById(R.id.deliveryAtTv);
        amountPaidTv = v.findViewById(R.id.deliveryAmountTv);
        riderPickUpTimeTv = v.findViewById(R.id.deliveryPickUpTime);
        orderStatusChangingBtn = v.findViewById(R.id.deliveryStatusChangeBtn);

        customerAddressTV = v.findViewById(R.id.customerAddressTV);
        customerNameTV = v.findViewById(R.id.customerNameTV);
        customerPhoneNumberTV = v.findViewById(R.id.customerphoneNumberTV);

        riderNameTV = v.findViewById(R.id.riderNameTV);
        riderPhoneNumberTV = v.findViewById(R.id.riderphoneNumberTV);
        riderDetailsLL = v.findViewById(R.id.riderDetailsLL);
        deliveryOrderList = v.findViewById(R.id.delivery_order_selector_rv);

        orderStatusAllBtn = v.findViewById(R.id.df_all_item_btn);
        orderStatusPreparingBtn = v.findViewById(R.id.df_preparing_item_btn);
        orderStatusReadyBtn = v.findViewById(R.id.df_ready_item_btn);
        orderStatusOutForDeliveryBtn = v.findViewById(R.id.df_out_for_delivery_item_btn);
        menu_name = v.findViewById(R.id.menu_name);
        message = v.findViewById(R.id.message);
        deliveryPickUpTimeshow= v.findViewById(R.id.deliveryPickUpTimeshow);

         // Used in rider time        riderPickUpTimeTv.setInputType(InputType.TYPE_NULL);
        riderPickUpTimeTv.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                final Calendar cldr = Calendar.getInstance();
                int hour = cldr.get(Calendar.HOUR_OF_DAY);
                int minutes = cldr.get(Calendar.MINUTE);
                // time picker dialog                picker = new TimePickerDialog(getActivity(),
                        new TimePickerDialog.OnTimeSetListener() {
                            @Override                            public void onTimeSet(TimePicker tp, int sHour, int sMinute) {
                                deliveryPickUpTimeshow.setText("Rider pickup at:"+sHour + ":" + sMinute);
                                deliveryPickUpTimeshow.setVisibility(View.VISIBLE);
                                riderPickUpTimeTv.setVisibility(View.GONE);
                            }
                        }, hour, minutes, true);
                picker.show();
            }
        });


        mOrderDetails = new ArrayList<>();
        OrderDetailsData orderItems = new OrderDetailsData();
        orderItems.setOrderNumber(112);
        orderItems.setOrderStatus(1);
        orderItems.setPinVal(112);
        orderItems.setDeliveryTime("04:30PM");
        orderItems.setAmountPaid(110);
        orderItems.setCurrencyCode("$");
        orderItems.setRideName("peter");
        orderItems.setCustomerContactNo("7827273087");
        orderItems.setCustomerName("peter");
        orderItems.setCustomerContactNo("9999999999");
        orderItems.setCustomerAddress("Boyle Estates, 96510 Lucile Falls, New Gillian");

        orderItems.setRiderPhoneNo("1234567890");
        orderItems.setMenuName("1 x Chicken burger, 1");
        orderItems.setMenuMessage("Provide extra sachets of ketchup ");
        mOrderDetails.add(orderItems);

        orderItems = new OrderDetailsData();
        orderItems.setOrderNumber(113);
        orderItems.setOrderStatus(0);
        orderItems.setPinVal(113);
        orderItems.setDeliveryTime("03:30PM");
        orderItems.setAmountPaid(120);
        orderItems.setCurrencyCode("RM");
        orderItems.setMenuName("1 x Chicken burger, 1 x Golden fries (Medium), 2 x Coke (Small)");
        orderItems.setMenuMessage("Provide extra salt ");

        mOrderDetails.add(orderItems);

        orderItems = new OrderDetailsData();
        orderItems.setOrderNumber(114);
        orderItems.setOrderStatus(3);
        orderItems.setPinVal(114);
        orderItems.setDeliveryTime("02:30PM");
        orderItems.setAmountPaid(140);
        orderItems.setCurrencyCode("R");
        orderItems.setMenuName("1 x Golden fries (Medium), 2 x Coke (Small)");
        orderItems.setMenuMessage("Provide extra salat ");
        mOrderDetails.add(orderItems);

        orderItems = new OrderDetailsData();
        orderItems.setOrderNumber(115);
        orderItems.setOrderStatus(4);
        orderItems.setPinVal(115);

        orderItems.setDeliveryTime("04:30PM");
        orderItems.setAmountPaid(110);
        orderItems.setCurrencyCode("$");
        mOrderDetails.add(orderItems);

        orderItems = new OrderDetailsData();
        orderItems.setOrderNumber(116);
        orderItems.setOrderStatus(1);

        orderItems.setDeliveryTime("04:30PM");
        orderItems.setAmountPaid(110);
        orderItems.setCurrencyCode("$");
        orderItems.setPinVal(116);
        mOrderDetails.add(orderItems);

        mDeliveryOrderItemsAdapter = new DeliveryOrderItemsAdapter(mOrderDetails);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
        deliveryOrderList.setLayoutManager(mLayoutManager);
        deliveryOrderList.setItemAnimator(new DefaultItemAnimator());
        deliveryOrderList.setAdapter(mDeliveryOrderItemsAdapter);

        filterOrderByStatus(orderStatusFilterval);
        if (orderStatusFilterval == -1) {
            orderStatusAllBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
        } else if (orderStatusFilterval == 1) {
            orderStatusPreparingBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
        } else if (orderStatusFilterval == 3) {
            orderStatusReadyBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
        } else if (orderStatusFilterval == 4) {
            orderStatusOutForDeliveryBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
        }

        orderStatusAllBtn.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                resetOrderStatusButtonbg();
                orderStatusAllBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
                visibleorderPosition = 0;
                filterOrderByStatus(-1);
            }
        });
        orderStatusPreparingBtn.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                resetOrderStatusButtonbg();
                orderStatusPreparingBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
                visibleorderPosition = 0;
                filterOrderByStatus(1);
            }
        });
        orderStatusReadyBtn.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                resetOrderStatusButtonbg();
                orderStatusReadyBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
                visibleorderPosition = 0;
                filterOrderByStatus(3);
            }
        });
        orderStatusOutForDeliveryBtn.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                resetOrderStatusButtonbg();
                orderStatusOutForDeliveryBtn.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
                visibleorderPosition = 0;
                filterOrderByStatus(4);
            }
        });

        updateNosToOrderStatuses();
        return v;
    }


    public class DeliveryOrderItemsAdapter extends RecyclerView.Adapter<DeliveryOrderItemsAdapter.OrderViewHolder> {

        ArrayList<OrderDetailsData> mOrderDetails = new ArrayList<>();

        public DeliveryOrderItemsAdapter(ArrayList<OrderDetailsData> mOrderDetails) {
            this.mOrderDetails = mOrderDetails;
            updateOrderDetails(mOrderDetails.get(visibleorderPosition));
        }

        public void updateData(ArrayList<OrderDetailsData> mOrderDetails) {
            this.mOrderDetails = mOrderDetails;
            updateOrderDetails(mOrderDetails.get(visibleorderPosition));
            notifyDataSetChanged();
        }

        @NonNull        @Override        public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.delivery_order_items_view, parent, false);

            return new OrderViewHolder(itemView);
        }

        @Override        public void onBindViewHolder(@NonNull OrderViewHolder holder, final int position) {
            final OrderDetailsData mOrderItem = mOrderDetails.get(position);
            holder.orderNoTV.setText("ORDER# " + mOrderItem.getOrderNumber());
            holder.pinTV.setText("PIN: " + mOrderItem.getPinVal());

            if (mOrderItem.getOrderStatus() == 0) {
                holder.orderStatusBtn.setBackgroundColor(getResources().getColor(R.color.bg_new_order));
                holder.orderStatusBtn.setText("New order");
            } else if (mOrderItem.getOrderStatus() == 1) {
                holder.orderStatusBtn.setBackgroundColor(getResources().getColor(R.color.bg_preparing));
                holder.orderStatusBtn.setText("Preparing");
            } else if (mOrderItem.getOrderStatus() == 3) {
                holder.orderStatusBtn.setBackgroundColor(getResources().getColor(R.color.bg_ready));
                holder.orderStatusBtn.setText("Ready");
            } else if (mOrderItem.getOrderStatus() == 4) {
                holder.orderStatusBtn.setBackgroundColor(getResources().getColor(R.color.bg_out_for_del));
                holder.orderStatusBtn.setText("Out for delivery");
            }

            if (visibleorderPosition == position) {
                holder.deliveryOrderItemLL.setBackgroundColor(getResources().getColor(R.color.bg_delivery_selected_item));
            } else {
                holder.deliveryOrderItemLL.setBackgroundColor(getResources().getColor(R.color.white));
            }
            holder.deliveryOrderItemLL.setOnClickListener(new View.OnClickListener() {
                @Override                public void onClick(View view) {
                    visibleorderPosition = position;
                    updateOrderDetails(mOrderItem);
                    notifyDataSetChanged();
                }
            });

        }

        @Override        public int getItemCount() {
            return mOrderDetails.size();
        }

        public class OrderViewHolder extends RecyclerView.ViewHolder {
            TextView orderNoTV, pinTV;
            TextView orderStatusBtn;

            LinearLayout deliveryOrderItemLL;

            public OrderViewHolder(View mView) {
                super(mView);

                orderNoTV = mView.findViewById(R.id.deliveryItemOrderNoTv);
                pinTV = mView.findViewById(R.id.deliveryItemOrderPinTv);
                orderStatusBtn = mView.findViewById(R.id.deliveryItemOrderStatusBtn);
                deliveryOrderItemLL = mView.findViewById(R.id.deliveryItemLL);
            }
        }
    }

    public void updateOrderDetails(final OrderDetailsData morderItemDetails) {
        deliveryAtTv.setText("Delivery at: " + morderItemDetails.getDeliveryTime());
        amountPaidTv.setText("Amount paid: " + morderItemDetails.getCurrencyCode() + morderItemDetails.getAmountPaid());
        menu_name.setText(" " + morderItemDetails.getMenuName());
        message.setText(" " + morderItemDetails.getMenuMessage());
//        orderStatusChangingBtn.setTag(morderItemDetails);
        customerAddressTV.setText(morderItemDetails.getCustomerAddress());
        customerNameTV.setText(morderItemDetails.getCustomerName());
        customerPhoneNumberTV.setText(morderItemDetails.getCustomerContactNo());
        riderNameTV.setText(morderItemDetails.getRideName());
        riderPhoneNumberTV.setText(morderItemDetails.getRiderPhoneNo());

        if (morderItemDetails.getOrderStatus() == 0 /*|| morderItemDetails.getOrderStatus()==4*/) {
            riderDetailsLL.setVisibility(View.INVISIBLE);
        } else {
            riderDetailsLL.setVisibility(View.VISIBLE);
        }

        orderStatusChangingBtn.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                if (morderItemDetails.getOrderStatus() == 0 && TextUtils.isEmpty(morderItemDetails.getPickUpTime())) {
                    UtilConstants.showAlertDialog(getContext(), "Please select pickup time before accepting the order.");
                    return;
                }

                //TODO call Api to change the Order Sttatus
            }
        });
        if (morderItemDetails.getOrderStatus() == 0) {
            riderPickUpTimeTv.setText("Select rider pickup time");
        } else {
            riderPickUpTimeTv.setText("Rider pickup at " + morderItemDetails.getPickUpTime());
        }

        if (morderItemDetails.getOrderStatus() == 0) {
            orderStatusChangingBtn.setBackgroundColor(getResources().getColor(R.color.bg_new_order));
            orderStatusChangingBtn.setText("Accept Order");
        } else if (morderItemDetails.getOrderStatus() == 1) {
            orderStatusChangingBtn.setBackgroundColor(getResources().getColor(R.color.bg_preparing));
            orderStatusChangingBtn.setText("Mark as prepared");
        } else if (morderItemDetails.getOrderStatus() == 3) {
            orderStatusChangingBtn.setBackgroundColor(getResources().getColor(R.color.bg_ready));
            orderStatusChangingBtn.setText("Confirm pickup");
        } else if (morderItemDetails.getOrderStatus() == 4) {

            orderStatusChangingBtn.setBackgroundColor(getResources().getColor(R.color.bg_out_for_del));
            orderStatusChangingBtn.setText("Out for delivery");
        }
    }

    public void resetOrderStatusButtonbg() {
        orderStatusAllBtn.setBackground(getResources().getDrawable(R.drawable.list_border));
        orderStatusPreparingBtn.setBackground(getResources().getDrawable(R.drawable.list_border));
        orderStatusReadyBtn.setBackground(getResources().getDrawable(R.drawable.list_border));
        orderStatusOutForDeliveryBtn.setBackground(getResources().getDrawable(R.drawable.list_border));
    }

    public void filterOrderByStatus(int status) {
        orderStatusFilterval = status;
        if (status == -1) {
            mDeliveryOrderItemsAdapter.updateData(mOrderDetails);
        } else {
            ArrayList<OrderDetailsData> mOrderList = new ArrayList<>();
            for (int i = 0; i < mOrderDetails.size(); i++) {
                if (status == mOrderDetails.get(i).getOrderStatus()) {
                    mOrderList.add(mOrderDetails.get(i));
                }
            }
            mDeliveryOrderItemsAdapter.updateData(mOrderList);
        }

//        updateOrderDetails(mOrderDetails.get(visibleorderPosition));    }

    public void updateNosToOrderStatuses() {

        int all = 0, preparing = 0, ready = 0, outForDelivery = 0;
        all = mOrderDetails.size();
        for (int i = 0; i < mOrderDetails.size(); i++) {
            if (mOrderDetails.get(i).getOrderStatus() == 1) {
                preparing++;
            } else if (mOrderDetails.get(i).getOrderStatus() == 3) {
                ready++;
            } else if (mOrderDetails.get(i).getOrderStatus() == 4) {
                outForDelivery++;
            }
        }
        orderStatusAllBtn.setText("ALL (" + all + ")");
        orderStatusPreparingBtn.setText("PREPARING (" + preparing + ")");
        orderStatusReadyBtn.setText("READY (" + ready + ")");
        orderStatusOutForDeliveryBtn.setText("OUT FOR DELIVERY (" + outForDelivery + ")");

    }
}

No comments:

Post a Comment