Android 简单实现订单模块类APP的物流详情页
生活随笔
收集整理的這篇文章主要介紹了
Android 简单实现订单模块类APP的物流详情页
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不廢話,需求:做一個訂單模塊類APP的物流詳情頁,怎么辦?
這個功能完全是看到別人寫的好,自己學習一下,主要寫一下自己對別人代碼的理解。參考文章:https://blog.csdn.net/weixin_34291004/article/details/87119827
app下的buidle添加:
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:appcompat-v7:27.1.1'compile 'com.android.support:design:27.1.1'compile 'com.android.support:support-v4:27.1.1'//封裝了RecyclerView自帶的Adaptercompile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.40' }項目buidle添加:
allprojects {repositories {jcenter()maven { url "https://jitpack.io" }google()} }主界面:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:fresco="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#F0F0F0"android:orientation="vertical"><include layout="@layout/include_title" /><android.support.v4.widget.NestedScrollViewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="#ffffff"><ImageViewandroid:layout_width="70dp"android:layout_height="70dp"android:layout_gravity="center_vertical"android:scaleType="fitXY"android:src="@mipmap/img" /><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"android:paddingBottom="17dp"android:paddingLeft="12dp"android:paddingRight="12dp"android:paddingTop="17dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="物流狀態: "android:textColor="#999999"android:textSize="14sp" /><TextViewandroid:id="@+id/tv_logistics_status"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="已簽收"android:textColor="#D73838"android:textSize="14sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="快遞公司: "android:textColor="#999999"android:textSize="14sp" /><TextViewandroid:id="@+id/tv_deliver_company"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="圓通快遞"android:textColor="#333333"android:textSize="14sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="運單編號: "android:textColor="#999999"android:textSize="14sp" /><TextViewandroid:id="@+id/tv_waybill_number"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="889718435885784298"android:textColor="#333333"android:textSize="14sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="官方電話: "android:textColor="#999999"android:textSize="14sp" /><TextViewandroid:id="@+id/tv_official_phone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="10086"android:textColor="#333333"android:textSize="14sp" /></LinearLayout></LinearLayout></LinearLayout><android.support.v7.widget.RecyclerViewandroid:id="@+id/rv_logistics"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:background="#ffffff" /></LinearLayout></android.support.v4.widget.NestedScrollView> </LinearLayout>代碼:
RecyclerView rv_logistics = findViewById(R.id.rv_logistics);rv_logistics.setLayoutManager(new LinearLayoutManager(this));rv_logistics.setFocusable(false);//解決ScrollView嵌套RecyclerView出現的系列問題rv_logistics.setNestedScrollingEnabled(false);rv_logistics.setHasFixedSize(true);rv_logistics.setAdapter(new LogisticsInfoAdapter(this, R.layout.item_logistics, getData())); private List<LogisticsInfoBean> getData() {List<LogisticsInfoBean> data = new ArrayList<>();data.add(new LogisticsInfoBean("2018-05-20 13:37:57", "客戶 簽收人: 他人代收 已簽收 感謝使用圓通速遞,期待再次為您服務"));data.add(new LogisticsInfoBean("2018-05-20 09:03:42", "【廣東省深圳市寶安區新安公司】 派件人: 陸黃星 派件中 派件員電話13360979918"));data.add(new LogisticsInfoBean("2018-05-20 08:27:10", "【廣東省深圳市寶安區新安公司】 已收入"));data.add(new LogisticsInfoBean("2018-05-20 04:38:32", "【深圳轉運中心】 已收入"));data.add(new LogisticsInfoBean("2018-05-19 01:27:49", "【北京轉運中心】 已發出 下一站 【深圳轉運中心】"));data.add(new LogisticsInfoBean("2018-05-19 01:17:19", "【北京轉運中心】 已收入"));data.add(new LogisticsInfoBean("2018-05-18 18:34:28", "【河北省保定市容城縣公司】 已發出 下一站 【北京轉運中心】"));data.add(new LogisticsInfoBean("2018-05-18 18:33:23", "【河北省保定市容城縣公司】 已打包"));data.add(new LogisticsInfoBean("2018-05-18 18:27:21", "【河北省保定市容城縣公司】 已收件"));return data;}適配器界面:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="wrap_content"android:paddingLeft="12dp"><LinearLayoutandroid:layout_width="18dp"android:layout_height="match_parent"android:gravity="center_horizontal"android:orientation="vertical"><Viewandroid:id="@+id/v_short_line"android:layout_width="1dp"android:layout_height="15dp"android:background="#E6E6E6" /><ImageViewandroid:id="@+id/iv_new"android:layout_width="18dp"android:layout_height="18dp"android:scaleType="fitXY"android:src="@mipmap/icon_logistics_new" /><ImageViewandroid:id="@+id/iv_old"android:layout_width="11dp"android:layout_height="11dp"android:scaleType="fitXY"android:src="@drawable/shape_gray_circle"android:visibility="gone" /><Viewandroid:id="@+id/v_long_line"android:layout_width="1dp"android:layout_height="wrap_content"android:background="#E6E6E6" /></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="16dp"android:layout_weight="1"android:orientation="vertical"android:paddingTop="11dp"><TextViewandroid:id="@+id/tv_info"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#18C289"android:textSize="14sp" /><TextViewandroid:id="@+id/tv_date"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="15dp"android:layout_marginTop="12dp"android:textColor="#18C289"android:textSize="12sp" /><Viewandroid:id="@+id/v_bottom_line"android:layout_width="match_parent"android:layout_height="1px"android:background="#E6E6E6" /></LinearLayout> </LinearLayout>適配器代碼:
package com.hq.logisticsdisplayexample;import android.content.Context; import android.support.annotation.Nullable;import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder;import java.util.List;public class LogisticsInfoAdapter extends BaseQuickAdapter<LogisticsInfoBean, BaseViewHolder> {private Context context;private List<LogisticsInfoBean> data;public LogisticsInfoAdapter(Context context, int layoutResId, @Nullable List<LogisticsInfoBean> data) {super(layoutResId, data);this.context = context;this.data = data;}@Overrideprotected void convert(BaseViewHolder helper, LogisticsInfoBean item) {//獲取物流信息和物流時間的字體顏色, 最新的一條物流數據字體為綠色int newInfoColor = context.getResources().getColor(helper.getLayoutPosition() == 0 ? R.color.green : R.color.gray);//當前item的索引==0 && 物流數據的數量大于1條 -> 顯示綠色大圓圈helper.setGone(R.id.iv_new, helper.getLayoutPosition() == 0 && data.size() > 1)//當前item的索引!=0 && 物流數據的數量大于1條 -> 顯示灰色小圓圈.setGone(R.id.iv_old, helper.getLayoutPosition() != 0 && data.size() > 1)//當前item的索引 != 0 -> 顯示圓點上面短一點的灰線.setVisible(R.id.v_short_line, helper.getLayoutPosition() != 0)//當前item的索引 != 物流數據的最后一條 -> 顯示圓點下面長一點的灰線.setGone(R.id.v_long_line, helper.getLayoutPosition() != data.size() - 1)//當前item的索引 != 物流數據的最后一條 -> 顯示物流時間下面的橫向的灰線.setGone(R.id.v_bottom_line, helper.getLayoutPosition() != data.size() - 1).setTextColor(R.id.tv_info, newInfoColor).setTextColor(R.id.tv_date, newInfoColor)//物流信息.setText(R.id.tv_info, item.getAcceptStation())//物流時間.setText(R.id.tv_date, item.getAcceptTime());} }代碼用到了一個開源庫:BaseRecyclerViewAdapterHelper,不理解的可以直接修改為RecycleView的adapter.
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Android 简单实现订单模块类APP的物流详情页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 对okhttp的封装
- 下一篇: 一.JavaScript基础