Skip to content
This repository was archived by the owner on Jun 8, 2024. It is now read-only.

Commit d11f3dd

Browse files
committed
MultiType: Better code style
Signed-off-by: Fung <fython@163.com>
1 parent a6f6c14 commit d11f3dd

7 files changed

Lines changed: 361 additions & 338 deletions

File tree

mobile/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ dependencies {
3333
compile "com.android.support:recyclerview-v7:$android_support_lib_version"
3434
compile "com.android.support:design:$android_support_lib_version"
3535
compile "com.android.support:customtabs:$android_support_lib_version"
36+
compile 'me.drakeet.multitype:multitype:3.1.0'
3637
compile 'com.google.code.gson:gson:2.8.0'
3738
compile 'com.squareup.okhttp3:okhttp:3.6.0'
3839
compile 'com.rengwuxian.materialedittext:library:2.1.4'

mobile/src/main/java/info/papdt/express/helper/ui/DetailsActivity.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
import android.view.View;
2626
import android.widget.ImageView;
2727

28-
import java.util.ArrayList;
29-
3028
import info.papdt.express.helper.R;
3129
import info.papdt.express.helper.api.PackageApi;
3230
import info.papdt.express.helper.dao.PackageDatabase;
@@ -35,8 +33,13 @@
3533
import info.papdt.express.helper.support.ClipboardUtils;
3634
import info.papdt.express.helper.support.ScreenUtils;
3735
import info.papdt.express.helper.support.Settings;
38-
import info.papdt.express.helper.ui.adapter.DetailsInfoAdapter;
3936
import 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

4144
public 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

Comments
 (0)