Эх сурвалжийг харах

1.修改Android Apex Drivers Order List动态请求。

Pen Li 7 жил өмнө
parent
commit
5b2ba4717c

+ 6 - 0
ApexDrivers/app/src/main/AndroidManifest.xml

@@ -86,6 +86,12 @@
                   android:screenOrientation="portrait">
         </activity>
 
+        <activity
+            android:name=".Home.HomeMoreActivity"
+            android:screenOrientation="portrait"
+                  >
+
+        </activity>
 
     </application>
 

+ 5 - 5
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Home/HomeCellLayout.java

@@ -12,13 +12,13 @@ import com.usai.redant.apexdrivers.R;
 
 import java.lang.ref.WeakReference;
 
-public class HomeCellLayout extends RelativeLayout implements HomeFragment.OrderModelDelegate {
+public class HomeCellLayout extends RelativeLayout implements HomeOrderModel.OrderModelDelegate {
 
     TextView titleTv, orderNoTv, containerNoTv, dateTv;
     ImageView statusView, markView;
     RelativeLayout contentContainer;
 
-    WeakReference<HomeFragment.HomeOrderModel> weakModel;
+    WeakReference<HomeOrderModel> weakModel;
     private boolean initialed = false;
 
     public HomeCellLayout(Context context) {
@@ -54,7 +54,7 @@ public class HomeCellLayout extends RelativeLayout implements HomeFragment.Order
         initialed = true;
     }
 
-    public void bindOrderModel(HomeFragment.HomeOrderModel model) {
+    public void bindOrderModel(HomeOrderModel model) {
 
         if (!initialed) {
             init();
@@ -86,13 +86,13 @@ public class HomeCellLayout extends RelativeLayout implements HomeFragment.Order
             return;
         }
 
-        HomeFragment.HomeOrderModel model = weakModel.get();
+        HomeOrderModel model = weakModel.get();
         titleTv.setText(model.title);
         orderNoTv.setText(model.orderNo);
         containerNoTv.setText(model.containerNo);
         dateTv.setText(model.date);
 
-        if (model.status == HomeFragment.HomeOrderModel.OrderStatusNew) {
+        if (model.status == HomeOrderModel.OrderStatusNew) {
             markView.setVisibility(View.VISIBLE);
         } else {
             markView.setVisibility(View.GONE);

+ 17 - 62
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Home/HomeFragment.java

@@ -217,6 +217,7 @@ public class HomeFragment extends Fragment {
                     model.type = section.optInt("type");
                     model.title = section.optString("title");
                     model.setOrders(section.optJSONArray("orders"));
+                    model.totalCount = section.optInt("totalCount",0);
 
                     mSectionArray.add(model);
                 }
@@ -321,11 +322,7 @@ public class HomeFragment extends Fragment {
                      * */
                     for (int i = 0; i < fragment.mSectionArray.size(); i++) {
                         HomeSectionModel sectionModel = fragment.mSectionArray.get(i);
-                        if (sectionModel.expand) {
-                            fragment.mListView.expandGroup(i);
-                        } else {
-                            fragment.mListView.collapseGroup(i);
-                        }
+                        fragment.mListView.expandGroup(i);
                     }
 
                     fragment.mAdapter.notifyDataSetChanged();
@@ -360,30 +357,19 @@ public class HomeFragment extends Fragment {
                 titleTv = view.findViewById(R.id.header_title_tv);
                 expandBtn = view.findViewById(R.id.section_switch_btn);
                 expandBtn.setOnClickListener(this);
-                view.setTag(this);
-            }
+                expandBtn.setText("More");
 
-            void setExpand(boolean expand) {
-                if (expand) {
-                    expandBtn.setText("Hide");
-                } else {
-                    expandBtn.setText("Show");
-                }
-            }
-
-            void hideExpandBtn(boolean hide) {
-                if (hide) {
-                    expandBtn.setVisibility(View.GONE);
-                } else {
-                    expandBtn.setVisibility(View.VISIBLE);
-                }
+                view.setTag(this);
             }
 
             void bindSectionModel(HomeSectionModel model) {
 
                 titleTv.setText(model.title);
-                setExpand(model.expand);
-
+                if (model.hasMore()) {
+                    expandBtn.setVisibility(View.VISIBLE);
+                } else {
+                    expandBtn.setVisibility(View.GONE);
+                }
                 weakSectionModel = new WeakReference<>(model);
             }
 
@@ -391,14 +377,9 @@ public class HomeFragment extends Fragment {
             public void onClick(View v) {
                 HomeSectionModel sectionModel = weakSectionModel.get();
 
-                sectionModel.expand = !sectionModel.expand;
-                setExpand(sectionModel.expand);
+                Intent intent = HomeMoreActivity.build(mCtx,sectionModel.type,sectionModel.title);
 
-                if (sectionModel.expand) {
-                    mListView.expandGroup(sectionModel.section);
-                } else {
-                    mListView.collapseGroup(sectionModel.section);
-                }
+                startActivity(intent);
             }
         }
 
@@ -539,52 +520,26 @@ public class HomeFragment extends Fragment {
         }
     }
 
-    public class HomeOrderModel {
-
-       static final int OrderStatusFinish = 0;
-       static final int OrderStatusProcessing = 1;
-       static final int OrderStatusNew = 2;
-
-       int status;
-       String title;
-       String orderNo;
-       String containerNo;
-       String date;
-       String orderID;
-       boolean selected;
-
-       OrderModelDelegate delegate;
-
-       public void setSelection(boolean selection) {
-           selected = selection;
-
-           if (delegate != null) {
-               delegate.refresh();
-           }
-       }
-
-    }
-
-    public interface OrderModelDelegate {
-        void refresh();
-    }
-
     private class HomeSectionModel {
 
         int type; // OrderStatus
         ArrayList<HomeOrderModel> orders;
         String title;
-        boolean expand = true;
         int section;
+        long totalCount;
 
         int orderCount() {
-            if (orders == null || !expand) {
+            if (orders == null) {
                 return 0;
             }
 
             return orders.size();
         }
 
+        boolean hasMore() {
+            return totalCount > orderCount();
+        }
+
         void setOrders(JSONArray orders) {
             if (orders == null) {
                 this.orders = null;

+ 561 - 0
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Home/HomeMoreActivity.java

@@ -0,0 +1,561 @@
+package com.usai.redant.apexdrivers.Home;
+
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.Intent;
+import android.database.DataSetObserver;
+import android.graphics.Color;
+import android.os.Handler;
+import android.os.Message;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AlertDialog;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.usai.redant.apexdrivers.Detail.DetailActivity;
+import com.usai.redant.apexdrivers.R;
+import com.usai.redant.rautils.Utils.Network;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+
+import static com.usai.redant.rautils.Utils.RAUtil.dp2px;
+import static com.usai.redant.rautils.Utils.RAUtil.sp2px;
+
+public class HomeMoreActivity extends AppCompatActivity implements AbsListView.OnScrollListener {
+
+    private final static String OrderTypeKey = "OrderTypeKey";
+    private final static String TitleKey = "TitleKey";
+
+    private final static String SavedJsonKey = "SavedJsonKey";
+    private final static String SavedOrderTypeKey = "SavedOrderTypeKey";
+
+    public static Intent build(Context context, int orderType, String title) {
+
+        if (context == null) {
+            return null;
+        }
+
+        Intent intent = new Intent(context,HomeMoreActivity.class);
+        intent.putExtra(OrderTypeKey,orderType);
+        if (title != null) {
+            intent.putExtra(TitleKey,title);
+        }
+
+        return intent;
+    }
+
+    private final static int limit = 20;
+
+    private ListView mListView;
+    private SwipeRefreshLayout mRefresh;
+    private TextView footer;
+    private Context mContext = this;
+    private ArrayList<HomeOrderModel> mOrders = new ArrayList<>();
+    private HomeMoreListAdapter mAdapter;
+    private HomeMoreHandler mHandler;
+    private int mType;
+    private HomeOrderModel mSelectedModel;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_home_more);
+
+        ActionBar actionBar = getSupportActionBar();
+        if (actionBar != null) {
+            actionBar.setHomeButtonEnabled(true);
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+
+        mHandler = new HomeMoreHandler(this);
+
+        mRefresh = findViewById(R.id.home_more_refresh);
+        mRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+            @Override
+            public void onRefresh() {
+                reload();
+            }
+        });
+
+        mListView = findViewById(R.id.home_more_list_view);
+        configureListView();
+
+        /**
+         * Data
+         * */
+        Intent intent = getIntent();
+        if (intent != null) {
+            mType = intent.getIntExtra(OrderTypeKey,0);
+            String title = intent.getStringExtra(TitleKey);
+            if (!TextUtils.isEmpty(title)) {
+                setTitle(title);
+            }
+        }
+
+        if (savedInstanceState != null) {
+            mType = savedInstanceState.getInt(SavedOrderTypeKey);
+            String jsonStr = savedInstanceState.getString(SavedJsonKey);
+            if (jsonStr != null) {
+                try {
+
+                    JSONObject json = new JSONObject(jsonStr);
+                    handleJson(json,LoadDataOptionInitial);
+
+                } catch (JSONException e){
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        if (mOrders.size() == 0) {
+            loadData();
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home: {
+                finish();
+                return true;
+            }
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+        outState.putInt(SavedOrderTypeKey,mType);
+        String json = prepareOrderForSave();
+        if (json != null) {
+            outState.putString(SavedJsonKey,json);
+        }
+    }
+
+    private String prepareOrderForSave() {
+
+        try {
+
+            JSONArray orders = new JSONArray();
+            for (HomeOrderModel model : mOrders) {
+
+                JSONObject json = new JSONObject();
+                json.put("status",model.status);
+                if (model.title != null) {
+                    json.put("title",model.title);
+                }
+                if (model.orderNo != null) {
+                    json.put("orderNo",model.orderNo);
+                }
+                if (model.orderID != null) {
+                    json.put("orderID",model.orderID);
+                }
+                if (model.containerNo != null) {
+                    json.put("containerNo",model.containerNo);
+                }
+                if (model.date != null) {
+                    json.put("date",model.date);
+                }
+                orders.put(json);
+            }
+
+            JSONObject json = new JSONObject();
+            json.put("orders",orders);
+
+            return json.toString();
+
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    /**
+     * Configure
+     * */
+    private void configureListView() {
+
+        footer = new TextView(mContext);
+        footer.setBackgroundColor(Color.WHITE);
+        footer.setGravity(Gravity.CENTER);
+        footer.setText("loading...");
+        footer.setTextSize(sp2px(mContext,7));
+        footer.setTextColor(Color.BLACK);
+        footer.setVisibility(View.INVISIBLE);
+
+        AbsListView.LayoutParams footerLayoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,dp2px(mContext,40));
+        footer.setLayoutParams(footerLayoutParams);
+
+        mListView.addFooterView(footer);
+        mListView.setOnScrollListener(this);
+
+        mAdapter = new HomeMoreListAdapter();
+        mListView.setAdapter(mAdapter);
+
+        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+
+
+                HomeOrderModel orderModel = mOrders.get(position);
+
+                if (mSelectedModel != null) {
+                    mSelectedModel.setSelection(false);
+                }
+                mSelectedModel = orderModel;
+                if (mSelectedModel != null) {
+                    mSelectedModel.setSelection(true);
+                }
+
+                Intent intent = DetailActivity.build(mContext,orderModel.orderID);
+                mContext.startActivity(intent);
+
+            }
+        });
+    }
+
+
+    /**
+     * Scroll Listener
+     * */
+    private int last_index;
+    private int total_index;
+    private boolean isLoading = false;//表示是否正处于加载状态
+
+    @Override
+    public void onScrollStateChanged(AbsListView view, int scrollState) {
+        if(last_index == total_index && (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE))
+        {
+            // 表示此时需要显示刷新视图界面进行新数据的加载(要等滑动停止)
+            if(!isLoading)
+            {
+                // 设置刷新界面可见
+                footer.setVisibility(View.VISIBLE);
+                loadMore();
+            }
+        }
+    }
+
+    @Override
+    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+        last_index = firstVisibleItem+visibleItemCount;
+        total_index = totalItemCount;
+    }
+
+    /**
+     * Alert/Dialog
+     * */
+    private ProgressDialog mProgressDialog;
+    private void showProgressDialog() {
+        if (mProgressDialog == null) {
+            mProgressDialog = new ProgressDialog(mContext);
+            mProgressDialog.setMessage("loading...");
+            mProgressDialog.setCancelable(false);
+            mProgressDialog.show();
+        }
+    }
+
+    private void dismissProgressDialog() {
+        if (mProgressDialog != null && mProgressDialog.isShowing()) {
+            mProgressDialog.dismiss();
+        }
+        mProgressDialog = null;
+    }
+
+    private void showWarningMsg(String msg) {
+        if (msg == null || msg.length() == 0) {
+            return;
+        }
+
+        new AlertDialog.Builder(mContext).setTitle("Warning")
+                .setMessage(msg)
+                .setPositiveButton("Ok",null)
+                .show();
+    }
+
+    /**
+     * Handler
+     * */
+    private static final class HomeMoreHandler extends Handler {
+
+        static final int HomeActionLoadData = 0;
+        static final int HomeActionError = 1;
+
+        WeakReference<HomeMoreActivity> mWeakHome;
+
+        HomeMoreHandler(HomeMoreActivity activity) {
+            mWeakHome = new WeakReference<>(activity);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+
+            HomeMoreActivity activity = mWeakHome.get();
+            activity.dismissProgressDialog();
+            switch (msg.what) {
+                case HomeActionLoadData: {
+
+                    if (activity.mRefresh.isRefreshing()) {
+                        activity.mRefresh.setRefreshing(false);
+                    }
+
+                    activity.mAdapter.notifyDataSetChanged();
+                }
+                break;
+                case HomeActionError: {
+                    String errMsg = (String) msg.obj;
+                    activity.showWarningMsg(errMsg);
+                }
+                default:{
+
+                }
+                break;
+            }
+        }
+    }
+
+    /**
+     * Load Data
+     * */
+    private final int LoadDataOptionInitial = 0;
+    private final int LoadDataOptionReload = 1;
+    private final int LoadDataOptionLoadMore = 2;
+
+    private void handleJson(JSONObject json, int option) {
+
+        if (json == null) {
+            return;
+        }
+
+        JSONArray orders = json.optJSONArray("orders");
+        if (orders != null) {
+            if (option != LoadDataOptionLoadMore) {
+                mOrders.clear();
+            }
+
+            for (int i = 0; i < orders.length(); i++) {
+                JSONObject order = orders.optJSONObject(i);
+                if (order != null) {
+                    HomeOrderModel model = new HomeOrderModel();
+                    model.status = order.optInt("status", 0);
+                    model.title = order.optString("title");
+                    model.orderNo = order.optString("orderNo");
+                    model.containerNo = order.optString("containerNo");
+                    model.date = order.optString("date");
+                    model.orderID = order.optString("orderID");
+
+                    mOrders.add(model);
+                }
+            }
+
+            Message msg = new Message();
+            msg.what = HomeMoreHandler.HomeActionLoadData;
+            mHandler.sendMessage(msg);
+        }
+
+    }
+
+    private void loadData(final int option) {
+
+        if (isLoading) {
+            return;
+        }
+        isLoading = true;
+
+        final int offset = option == LoadDataOptionLoadMore ? mOrders.size() : 0;
+
+        showProgressDialog();
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+
+                JSONObject json = com.usai.redant.apexdrivers.Network.Network.requestMoreOrder(mContext,mType,offset,limit);
+                if (json != null) {
+                    try {
+
+                        int restul = json.getInt("result");
+                        if (restul == Network.RESULT_TRUE) {
+
+                            mSelectedModel = null;
+                            handleJson(json,option);
+
+                        } else {
+
+                            // error
+                            Message msg = new Message();
+                            msg.what = HomeMoreHandler.HomeActionError;
+
+                            String errMsg = json.optString("err_msg");
+                            if (errMsg == null || errMsg.length() == 0) {
+                                errMsg = "Sorry,there is something wrong";
+                            }
+                            msg.obj = errMsg;
+
+                            mHandler.sendMessage(msg);
+
+                        }
+
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                        // error
+                        Message msg = new Message();
+                        msg.what = HomeMoreHandler.HomeActionError;
+
+                        String errMsg = "Sorry,there is something wrong";
+                        msg.obj = errMsg;
+
+                        mHandler.sendMessage(msg);
+                    }
+                } else {
+                    // error;
+                    Message msg = new Message();
+                    msg.what = HomeMoreHandler.HomeActionError;
+
+                    String errMsg = "Sorry,there is something wrong";
+                    msg.obj = errMsg;
+
+                    mHandler.sendMessage(msg);
+                }
+                isLoading = false;
+            }
+
+        }).start();
+
+    }
+
+    private void loadData() {
+        loadData(LoadDataOptionInitial);
+    }
+
+    private void reload() {
+        loadData(LoadDataOptionReload);
+    }
+
+    private void loadMore() {
+        loadData(LoadDataOptionLoadMore);
+    }
+
+    /**
+     * Adapter
+     * */
+    private class HomeMoreListAdapter extends BaseAdapter {
+
+        private class OrderCellHolder {
+
+            WeakReference<HomeCellLayout> weakCell;
+
+            OrderCellHolder(View view) {
+
+                view.setTag(this);
+                weakCell = new WeakReference<>((HomeCellLayout) view);
+            }
+
+            void bindOrderModel(HomeOrderModel model) {
+
+                if (weakCell != null && weakCell.get() != null) {
+                    weakCell.get().bindOrderModel(model);
+                }
+            }
+
+        }
+
+        @Override
+        public boolean areAllItemsEnabled() {
+            return super.areAllItemsEnabled();
+        }
+
+        @Override
+        public boolean isEnabled(int position) {
+            return super.isEnabled(position);
+        }
+
+        @Override
+        public void registerDataSetObserver(DataSetObserver observer) {
+            super.registerDataSetObserver(observer);
+        }
+
+        @Override
+        public void unregisterDataSetObserver(DataSetObserver observer) {
+            super.unregisterDataSetObserver(observer);
+        }
+
+        @Override
+        public int getCount() {
+            return mOrders.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return mOrders.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public boolean hasStableIds() {
+            return true;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            View cell;
+            OrderCellHolder holder;
+            if (convertView == null) {
+
+                cell = LayoutInflater.from(mContext).inflate(R.layout.home_order_cell,null);
+                holder = new OrderCellHolder(cell);
+
+            } else {
+
+                cell = convertView;
+                holder = (OrderCellHolder)convertView.getTag();
+            }
+
+            HomeOrderModel orderModel = mOrders.get(position);
+
+            holder.bindOrderModel(orderModel);
+
+            return cell;
+        }
+
+        @Override
+        public int getItemViewType(int position) {
+            return 0;
+        }
+
+        @Override
+        public int getViewTypeCount() {
+            return 1;
+        }
+
+        @Override
+        public boolean isEmpty() {
+            return super.isEmpty();
+        }
+    }
+}

+ 31 - 0
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Home/HomeOrderModel.java

@@ -0,0 +1,31 @@
+package com.usai.redant.apexdrivers.Home;
+
+public class HomeOrderModel {
+
+    static final int OrderStatusFinish = 0;
+    static final int OrderStatusProcessing = 1;
+    static final int OrderStatusNew = 2;
+
+    int status;
+    String title;
+    String orderNo;
+    String containerNo;
+    String date;
+    String orderID;
+    boolean selected;
+
+    OrderModelDelegate delegate;
+
+    public void setSelection(boolean selection) {
+        selected = selection;
+
+        if (delegate != null) {
+            delegate.refresh();
+        }
+    }
+
+    public interface OrderModelDelegate {
+        void refresh();
+    }
+
+}

+ 2 - 1
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Login/RetrievePasswordActivity.java

@@ -26,6 +26,7 @@ import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.usai.redant.apexdrivers.ApexDriverApplication;
 import com.usai.redant.apexdrivers.Network.Network;
 import com.usai.redant.apexdrivers.R;
 
@@ -287,7 +288,7 @@ public class RetrievePasswordActivity extends AppCompatActivity
 		@Override
 		protected Boolean doInBackground(Void... params)
 		{
-			errorcode = Network.retrieve_pass(m_sUser, m_sEmail);
+			errorcode = Network.retrieve_pass(ApexDriverApplication.sharedApplication(),m_sUser, m_sEmail);
 			if (errorcode == Network.RESULT_TRUE)
 				return true;
 			else

+ 38 - 10
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Network/Network.java

@@ -1,6 +1,7 @@
 package com.usai.redant.apexdrivers.Network;
 
 
+import android.app.Application;
 import android.content.Context;
 import android.os.Bundle;
 import android.util.Log;
@@ -22,15 +23,15 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
     public static String URL_HOST = "";
     private static boolean FAKE_DATA = true;
 
-    public static boolean NetworkIsAvailable() {
-        return com.usai.redant.rautils.Utils.Network.isNetworkAvailable(null);
+    public static boolean NetworkIsAvailable(Application application) {
+        return com.usai.redant.rautils.Utils.Network.isNetworkAvailable(application);
     }
 
-    public static int retrieve_pass(String user, String email)
+    public static int retrieve_pass(Application application, String user, String email)
     {
         String TAG = "net_dbg@retrieve_pass";
         Log.d(TAG, "u:" + user + ";e:" + email);
-        if (!NetworkIsAvailable())
+        if (!NetworkIsAvailable(application))
         {
             Log.d(TAG, "network not available!");
             return Network.RESULT_NET_NOTAVAILABLE; // network not available
@@ -90,7 +91,7 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
 
         if (FAKE_DATA) {
             try {
-                sleep(3000);
+                sleep(2000);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -112,11 +113,38 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
         }
     }
 
+    public static JSONObject requestMoreOrder(Context context, int orderType, int offset, int limit) {
+
+        if (FAKE_DATA) {
+            try {
+                sleep(2000);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return loadFakeData(context, R.raw.fake_more_order);
+        }
+
+        Bundle params = new Bundle();
+        String jsonStr = getJson(URL_HOST,params);
+        if (jsonStr == null || jsonStr.isEmpty()) {
+            return null;
+        }
+
+        try {
+            JSONObject json = new JSONObject(jsonStr);
+            return json;
+        } catch (JSONException e) {
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+
     public static JSONObject requestOrderDetail(Context context,String orderID) {
 
         if (FAKE_DATA) {
             try {
-                sleep(3000);
+                sleep(2000);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -148,7 +176,7 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
 
         if (FAKE_DATA) {
             try {
-                sleep(3000);
+                sleep(2000);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -181,7 +209,7 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
         if (FAKE_DATA) {
 
             try {
-                sleep(3000);
+                sleep(2000);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -230,7 +258,7 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
         if (FAKE_DATA) {
 
             try {
-                sleep(3000);
+                sleep(2000);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -265,7 +293,7 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
 
         if (FAKE_DATA) {
             try {
-                sleep(3000);
+                sleep(000);
             } catch (Exception e) {
                 e.printStackTrace();
             }

+ 30 - 0
ApexDrivers/app/src/main/res/layout/activity_home_more.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".Home.HomeMoreActivity">
+
+    <android.support.v4.widget.SwipeRefreshLayout
+        android:id="@+id/home_more_refresh"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        >
+
+        <ListView
+            android:id="@+id/home_more_list_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:divider="@null"
+            android:background="#ffffff"
+            android:listSelector="@drawable/home_list_selector"
+            />
+
+    </android.support.v4.widget.SwipeRefreshLayout>
+
+
+
+
+</android.support.constraint.ConstraintLayout>

+ 145 - 0
ApexDrivers/app/src/main/res/raw/fake_more_order.json

@@ -0,0 +1,145 @@
+{
+  "result": 2,
+  "orders": [{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        },{
+          "orderID": "00000001",
+          "orderNo": "AFS180530001200",
+          "containerNo": "TCNU6432476",
+          "date": "5/30/2018",
+          "status": 2,
+          "title": "Pickup Order New"
+        }
+  ]
+}

+ 4 - 1
ApexDrivers/app/src/main/res/raw/fake_order_list.json

@@ -4,6 +4,7 @@
     {
       "type": 2,
       "title": "New Order",
+      "totalCount":3,
       "orders": [
         {
           "orderID": "00000001",
@@ -34,6 +35,7 @@
     {
       "type": 1,
       "title": "Processing Order",
+      "totalCount":23,
       "orders": [
         {
           "orderID": "00000001",
@@ -64,6 +66,7 @@
     {
       "type": 0,
       "title": "Finish Order",
+      "totalCount":23,
       "orders": [
         {
           "orderID": "00000001",
@@ -92,4 +95,4 @@
       ]
     }
   ]
-}
+}