2525import android .view .View ;
2626import android .widget .ImageView ;
2727
28- import java .util .ArrayList ;
29-
3028import info .papdt .express .helper .R ;
3129import info .papdt .express .helper .api .PackageApi ;
3230import info .papdt .express .helper .dao .PackageDatabase ;
3533import info .papdt .express .helper .support .ClipboardUtils ;
3634import info .papdt .express .helper .support .ScreenUtils ;
3735import info .papdt .express .helper .support .Settings ;
38- import info .papdt .express .helper .ui .adapter .DetailsInfoAdapter ;
3936import info .papdt .express .helper .ui .common .AbsActivity ;
37+ import info .papdt .express .helper .ui .items .DetailsStatusItemBinder ;
38+ import info .papdt .express .helper .ui .items .DetailsTwoLineItem ;
39+ import info .papdt .express .helper .ui .items .DetailsTwoLineItemBinder ;
40+ import info .papdt .express .helper .ui .items .SubheaderItemBinder ;
41+ import me .drakeet .multitype .Items ;
42+ import me .drakeet .multitype .MultiTypeAdapter ;
4043
4144public class DetailsActivity extends AbsActivity {
4245
@@ -46,7 +49,8 @@ public class DetailsActivity extends AbsActivity {
4649 private ImageView mBackground ;
4750 private AppCompatEditText mNameEdit ;
4851
49- private DetailsInfoAdapter mAdapter ;
52+ private MultiTypeAdapter mAdapter ;
53+ private DetailsStatusItemBinder mStatusBinder ;
5054
5155 private AlertDialog mEditDialog , mDeleteDialog ;
5256
@@ -97,7 +101,11 @@ public void onClick(View view) {
97101
98102 private void setUpData () {
99103 if (mAdapter == null ) {
100- mAdapter = new DetailsInfoAdapter (this );
104+ mAdapter = new MultiTypeAdapter ();
105+ mStatusBinder = new DetailsStatusItemBinder ();
106+ mAdapter .register (DetailsTwoLineItem .class , new DetailsTwoLineItemBinder ());
107+ mAdapter .register (String .class , new SubheaderItemBinder ());
108+ mAdapter .register (Package .Status .class , mStatusBinder );
101109 mRecyclerView .setAdapter (mAdapter );
102110 }
103111 new ListBuildTask ().execute ();
@@ -132,22 +140,13 @@ private void setUpData() {
132140 }
133141 }
134142
135- private ArrayList <DetailsInfoAdapter .ItemType > buildItems () {
136- ArrayList <DetailsInfoAdapter .ItemType > items = new ArrayList <>();
137-
138- items .add (new DetailsInfoAdapter .ItemType (DetailsInfoAdapter .ItemType .TYPE_NORMAL , DetailsInfoAdapter .ItemType .ID_NAME ));
139- items .add (new DetailsInfoAdapter .ItemType (DetailsInfoAdapter .ItemType .TYPE_NORMAL , DetailsInfoAdapter .ItemType .ID_NUMBER ));
140- items .add (new DetailsInfoAdapter .ItemType (DetailsInfoAdapter .ItemType .TYPE_SUBHEADER , DetailsInfoAdapter .ItemType .ID_STATUS_HEADER ));
141-
142- if (data .data != null ) {
143- for (int i = 0 ; i < data .data .size (); i ++) {
144- DetailsInfoAdapter .ItemType item = new DetailsInfoAdapter .ItemType (DetailsInfoAdapter .ItemType .TYPE_PACK_STATUS , DetailsInfoAdapter .ItemType .ID_STATUS );
145- item .statusIndex = i ;
146- items .add (item );
147- }
148- }
149-
150- return items ;
143+ private Items buildItems () {
144+ Items newItems = new Items ();
145+ newItems .add (new DetailsTwoLineItem (DetailsTwoLineItem .TYPE_NAME , data .name ));
146+ newItems .add (new DetailsTwoLineItem (DetailsTwoLineItem .TYPE_NUMBER , data .number , data .companyChineseName ));
147+ newItems .add (getString (R .string .list_status_subheader ));
148+ newItems .addAll (data .data );
149+ return newItems ;
151150 }
152151
153152 @ Override
@@ -283,10 +282,10 @@ public static void launch(AppCompatActivity activity, Package p) {
283282 activity .startActivityForResult (intent , MainActivity .REQUEST_DETAILS );
284283 }
285284
286- private class ListBuildTask extends AsyncTask <Void , Void , ArrayList < DetailsInfoAdapter . ItemType > > {
285+ private class ListBuildTask extends AsyncTask <Void , Void , Items > {
287286
288287 @ Override
289- protected ArrayList < DetailsInfoAdapter . ItemType > doInBackground (Void ... voids ) {
288+ protected Items doInBackground (Void ... voids ) {
290289 if (data == null ) {
291290 data = Package .buildFromJson (getIntent ().getStringExtra (EXTRA_PACKAGE_JSON ));
292291 }
@@ -306,8 +305,9 @@ protected ArrayList<DetailsInfoAdapter.ItemType> doInBackground(Void... voids) {
306305 }
307306
308307 @ Override
309- protected void onPostExecute (ArrayList <DetailsInfoAdapter .ItemType > items ) {
310- mAdapter .setData (data , items );
308+ protected void onPostExecute (Items items ) {
309+ mStatusBinder .setData (data );
310+ mAdapter .setItems (items );
311311 mAdapter .notifyDataSetChanged ();
312312
313313 int color ;
0 commit comments