Skip to content

Commit dd1187a

Browse files
committed
重构 sites
1 parent 25012ed commit dd1187a

6 files changed

Lines changed: 194 additions & 239 deletions

File tree

diycode-app/src/main/java/com/gcssloop/diycode/activity/MainActivity.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@
4444
import com.gcssloop.diycode.base.app.BaseActivity;
4545
import com.gcssloop.diycode.base.app.ViewHolder;
4646
import com.gcssloop.diycode.fragment.NewsListFragment;
47-
import com.gcssloop.diycode.fragment.SitesListFragment;
47+
import com.gcssloop.diycode.fragment.SitesListFragment2;
4848
import com.gcssloop.diycode.fragment.TopicListFragment;
49-
import com.gcssloop.diycode.test.TestFragment;
5049
import com.gcssloop.diycode.test.TextFragment;
5150
import com.gcssloop.diycode.utils.Config;
5251
import com.gcssloop.diycode.utils.DataCache;
@@ -67,8 +66,7 @@ public class MainActivity extends BaseActivity
6766
private int mCurrentPosition = 0;
6867
private TopicListFragment mFragment1;
6968
private NewsListFragment mFragment2;
70-
private SitesListFragment mFragment3;
71-
private TestFragment mFragment4;
69+
private SitesListFragment2 mFragment3;
7270

7371
private boolean isToolbarFirstClick = true;
7472

@@ -95,8 +93,7 @@ private void initViewPager(ViewHolder holder) {
9593

9694
mFragment1 = TopicListFragment.newInstance();
9795
mFragment2 = NewsListFragment.newInstance();
98-
mFragment3 = SitesListFragment.newInstance();
99-
mFragment4 = TestFragment.newInstance();
96+
mFragment3 = SitesListFragment2.newInstance();
10097

10198
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
10299
String[] types = {"Topics", "News", "Sites", "Test"};
@@ -109,14 +106,12 @@ public Fragment getItem(int position) {
109106
return mFragment2;
110107
if (position == 2)
111108
return mFragment3;
112-
if (position == 3)
113-
return mFragment4;
114109
return TextFragment.newInstance(types[position]);
115110
}
116111

117112
@Override
118113
public int getCount() {
119-
return 4;
114+
return 3;
120115
}
121116

122117
@Override

diycode-app/src/main/java/com/gcssloop/diycode/base/app/RefreshRecyclerFragment.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ protected void initViews(ViewHolder holder, View root) {
8888
mFooterProvider = new FooterProvider(getContext()) {
8989
@Override
9090
public void needLoadMore() {
91-
if (isFirstAddFooter){
91+
if (isFirstAddFooter) {
9292
isFirstAddFooter = false;
9393
return;
9494
}
@@ -128,16 +128,12 @@ protected void refresh() {
128128
}
129129

130130
protected void loadMore() {
131-
try {
132-
if (!loadMoreEnable) return;
133-
String uuid = request(pageIndex * pageCount, pageCount);
134-
mPostTypes.put(uuid, POST_LOAD_MORE);
135-
pageIndex++;
136-
mState = STATE_LOADING;
137-
mFooterProvider.setFooterLoading();
138-
} catch (Exception e) {
139-
e.printStackTrace();
140-
}
131+
if (!loadMoreEnable) return;
132+
String uuid = request(pageIndex * pageCount, pageCount);
133+
mPostTypes.put(uuid, POST_LOAD_MORE);
134+
pageIndex++;
135+
mState = STATE_LOADING;
136+
mFooterProvider.setFooterLoading();
141137
}
142138

143139
@Subscribe(threadMode = ThreadMode.MAIN)

diycode-app/src/main/java/com/gcssloop/diycode/fragment/SitesListFragment.java

Lines changed: 0 additions & 190 deletions
This file was deleted.

diycode-app/src/main/java/com/gcssloop/diycode/fragment/SitesListFragment2.java

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
import android.content.Context;
2626
import android.os.Bundle;
27+
import android.os.Handler;
28+
import android.os.Message;
2729
import android.support.annotation.NonNull;
2830
import android.support.v7.widget.GridLayoutManager;
2931
import android.support.v7.widget.RecyclerView;
@@ -57,9 +59,10 @@ public static SitesListFragment2 newInstance() {
5759
if (sitesList != null) {
5860
Logger.e("sites : " + sitesList.size());
5961
mAdapter.addDatas(sitesList);
62+
setRefreshEnable(false);
6063
setLoadMoreEnable(false);
6164
} else {
62-
refresh();
65+
loadMore();
6366
}
6467
}
6568

@@ -75,7 +78,7 @@ protected void setRecyclerViewAdapter(Context context, RecyclerView recyclerView
7578
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
7679
@Override
7780
public int getSpanSize(int position) {
78-
return (mAdapter.getDatas().get(position) instanceof SitesItem) ? 2 : 1;
81+
return (mAdapter.getFullDatas().get(position) instanceof SiteItem) ? 1 : 2;
7982
}
8083
});
8184
return layoutManager;
@@ -86,10 +89,12 @@ public int getSpanSize(int position) {
8689
}
8790

8891
@Override protected void onRefresh(GetSitesEvent event, HeaderFooterAdapter adapter) {
92+
toast("刷新成功");
8993
convertData(event.getBean());
9094
}
9195

9296
@Override protected void onLoadMore(GetSitesEvent event, HeaderFooterAdapter adapter) {
97+
toast("加载成功");
9398
convertData(event.getBean());
9499
}
95100

@@ -98,23 +103,41 @@ public int getSpanSize(int position) {
98103
}
99104

100105
// 转换数据
101-
private void convertData(List<Sites> sitesList) {
102-
List<Serializable> items = new ArrayList<>();
103-
for (Sites sites : sitesList) {
104-
105-
items.add(new SitesItem(sites.getName()));
106-
107-
for (Sites.Site site : sites.getSites()) {
108-
items.add(new SiteItem(site.getName(), site.getUrl(), site.getAvatar_url()));
106+
private void convertData(final List<Sites> sitesList) {
107+
final Handler handler = new Handler(new Handler.Callback() {
108+
@Override public boolean handleMessage(Message msg) {
109+
Bundle bundle = msg.getData();
110+
ArrayList<Serializable> items = (ArrayList<Serializable>) bundle.get("Items");
111+
mAdapter.clearDatas();
112+
mAdapter.addDatas(items);
113+
mDataCache.saveSitesItems(items);
114+
return false;
109115
}
110-
111-
if (sites.getSites().size() % 2 == 1) {
112-
items.add(new SiteItem("", "", ""));
116+
});
117+
new Thread(new Runnable() {
118+
@Override public void run() {
119+
ArrayList<Serializable> items = new ArrayList<>();
120+
for (Sites sites : sitesList) {
121+
122+
items.add(new SitesItem(sites.getName()));
123+
124+
for (Sites.Site site : sites.getSites()) {
125+
items.add(new SiteItem(site.getName(), site.getUrl(), site.getAvatar_url()));
126+
}
127+
128+
if (sites.getSites().size() % 2 == 1) {
129+
items.add(new SiteItem("", "", ""));
130+
}
131+
}
132+
133+
Bundle bundle = new Bundle();
134+
bundle.putSerializable("Items", items);
135+
Message msg = new Message();
136+
msg.obj = bundle;
137+
handler.sendMessage(msg);
113138
}
114-
}
115-
mAdapter.clearDatas();
116-
mAdapter.addDatas(items);
117-
mDataCache.saveSitesItems(items);
139+
});
118140
setLoadMoreEnable(false);
141+
setRefreshEnable(false);
119142
}
120143
}

0 commit comments

Comments
 (0)