Skip to content

Commit 25012ed

Browse files
committed
结构调整
1 parent 3ff8b10 commit 25012ed

10 files changed

Lines changed: 140 additions & 17 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@
4545
import com.gcssloop.diycode.base.app.ViewHolder;
4646
import com.gcssloop.diycode.fragment.NewsListFragment;
4747
import com.gcssloop.diycode.fragment.SitesListFragment;
48-
import com.gcssloop.diycode.fragment.TextFragment;
4948
import com.gcssloop.diycode.fragment.TopicListFragment;
5049
import com.gcssloop.diycode.test.TestFragment;
50+
import com.gcssloop.diycode.test.TextFragment;
5151
import com.gcssloop.diycode.utils.Config;
5252
import com.gcssloop.diycode.utils.DataCache;
5353
import com.gcssloop.diycode_sdk.api.login.event.LogoutEvent;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ public abstract class RefreshRecyclerFragment<T, Event extends BaseEvent<List<T>
7171
private boolean loadMoreEnable = true; // 是否允许加载
7272

7373
// 适配器
74-
private HeaderFooterAdapter mAdapter;
75-
private FooterProvider mFooterProvider;
74+
protected HeaderFooterAdapter mAdapter;
75+
protected FooterProvider mFooterProvider;
7676

7777
protected boolean isFirstAddFooter = true;
7878

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@
3232
import android.widget.TextView;
3333

3434
import com.gcssloop.diycode.R;
35-
import com.gcssloop.diycode.adapter.sites.SiteItem;
36-
import com.gcssloop.diycode.adapter.sites.SiteProvider;
37-
import com.gcssloop.diycode.adapter.sites.SitesItem;
38-
import com.gcssloop.diycode.adapter.sites.SitesProvider;
35+
import com.gcssloop.diycode.fragment.provider.SiteItem;
36+
import com.gcssloop.diycode.fragment.provider.SiteProvider;
37+
import com.gcssloop.diycode.fragment.provider.SitesItem;
38+
import com.gcssloop.diycode.fragment.provider.SitesProvider;
3939
import com.gcssloop.diycode.base.app.BaseFragment;
4040
import com.gcssloop.diycode.base.app.ViewHolder;
4141
import com.gcssloop.diycode.utils.DataCache;
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*
2+
* Copyright 2017 GcsSloop
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
* Last modified 2017-04-09 14:32:41
17+
*
18+
* GitHub: https://github.com/GcsSloop
19+
* Website: http://www.gcssloop.com
20+
* Weibo: http://weibo.com/GcsSloop
21+
*/
22+
23+
package com.gcssloop.diycode.fragment;
24+
25+
import android.content.Context;
26+
import android.os.Bundle;
27+
import android.support.annotation.NonNull;
28+
import android.support.v7.widget.GridLayoutManager;
29+
import android.support.v7.widget.RecyclerView;
30+
31+
import com.gcssloop.diycode.base.app.RefreshRecyclerFragment;
32+
import com.gcssloop.diycode.fragment.provider.SiteItem;
33+
import com.gcssloop.diycode.fragment.provider.SiteProvider;
34+
import com.gcssloop.diycode.fragment.provider.SitesItem;
35+
import com.gcssloop.diycode.fragment.provider.SitesProvider;
36+
import com.gcssloop.diycode_sdk.api.sites.bean.Sites;
37+
import com.gcssloop.diycode_sdk.api.sites.event.GetSitesEvent;
38+
import com.gcssloop.diycode_sdk.log.Logger;
39+
import com.gcssloop.recyclerview.adapter.multitype.HeaderFooterAdapter;
40+
41+
import java.io.Serializable;
42+
import java.util.ArrayList;
43+
import java.util.List;
44+
45+
public class SitesListFragment2 extends RefreshRecyclerFragment<Sites, GetSitesEvent> {
46+
47+
public static SitesListFragment2 newInstance() {
48+
Bundle args = new Bundle();
49+
SitesListFragment2 fragment = new SitesListFragment2();
50+
fragment.setArguments(args);
51+
return fragment;
52+
}
53+
54+
@Override public void initData(HeaderFooterAdapter adapter) {
55+
setLoadMoreEnable(true);
56+
List<Serializable> sitesList = mDataCache.getSitesItems();
57+
if (sitesList != null) {
58+
Logger.e("sites : " + sitesList.size());
59+
mAdapter.addDatas(sitesList);
60+
setLoadMoreEnable(false);
61+
} else {
62+
refresh();
63+
}
64+
}
65+
66+
@Override
67+
protected void setRecyclerViewAdapter(Context context, RecyclerView recyclerView,
68+
HeaderFooterAdapter adapter) {
69+
mAdapter.register(SiteItem.class, new SiteProvider(getContext()));
70+
mAdapter.register(SitesItem.class, new SitesProvider(getContext()));
71+
}
72+
73+
@NonNull @Override protected RecyclerView.LayoutManager getRecyclerViewLayoutManager() {
74+
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 2);
75+
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
76+
@Override
77+
public int getSpanSize(int position) {
78+
return (mAdapter.getDatas().get(position) instanceof SitesItem) ? 2 : 1;
79+
}
80+
});
81+
return layoutManager;
82+
}
83+
84+
@NonNull @Override protected String request(int offset, int limit) {
85+
return mDiycode.getSites();
86+
}
87+
88+
@Override protected void onRefresh(GetSitesEvent event, HeaderFooterAdapter adapter) {
89+
convertData(event.getBean());
90+
}
91+
92+
@Override protected void onLoadMore(GetSitesEvent event, HeaderFooterAdapter adapter) {
93+
convertData(event.getBean());
94+
}
95+
96+
@Override protected void onError(GetSitesEvent event, String postType) {
97+
toast("获取失败");
98+
}
99+
100+
// 转换数据
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()));
109+
}
110+
111+
if (sites.getSites().size() % 2 == 1) {
112+
items.add(new SiteItem("", "", ""));
113+
}
114+
}
115+
mAdapter.clearDatas();
116+
mAdapter.addDatas(items);
117+
mDataCache.saveSitesItems(items);
118+
setLoadMoreEnable(false);
119+
}
120+
}

diycode-app/src/main/java/com/gcssloop/diycode/adapter/sites/SiteItem.java renamed to diycode-app/src/main/java/com/gcssloop/diycode/fragment/provider/SiteItem.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*
16-
* Last modified 2017-03-28 03:27:19
16+
* Last modified 2017-04-09 14:31:47
1717
*
1818
* GitHub: https://github.com/GcsSloop
1919
* Website: http://www.gcssloop.com
2020
* Weibo: http://weibo.com/GcsSloop
2121
*/
2222

23-
package com.gcssloop.diycode.adapter.sites;
23+
package com.gcssloop.diycode.fragment.provider;
2424

2525
import java.io.Serializable;
2626

diycode-app/src/main/java/com/gcssloop/diycode/adapter/sites/SiteProvider.java renamed to diycode-app/src/main/java/com/gcssloop/diycode/fragment/provider/SiteProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*
16-
* Last modified 2017-03-28 03:28:36
16+
* Last modified 2017-04-09 14:31:47
1717
*
1818
* GitHub: https://github.com/GcsSloop
1919
* Website: http://www.gcssloop.com
2020
* Weibo: http://weibo.com/GcsSloop
2121
*/
2222

23-
package com.gcssloop.diycode.adapter.sites;
23+
package com.gcssloop.diycode.fragment.provider;
2424

2525
import android.content.Context;
2626
import android.support.annotation.NonNull;

diycode-app/src/main/java/com/gcssloop/diycode/adapter/sites/SitesItem.java renamed to diycode-app/src/main/java/com/gcssloop/diycode/fragment/provider/SitesItem.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*
16-
* Last modified 2017-03-28 03:28:11
16+
* Last modified 2017-04-09 14:31:47
1717
*
1818
* GitHub: https://github.com/GcsSloop
1919
* Website: http://www.gcssloop.com
2020
* Weibo: http://weibo.com/GcsSloop
2121
*/
2222

23-
package com.gcssloop.diycode.adapter.sites;
23+
package com.gcssloop.diycode.fragment.provider;
2424

2525
import java.io.Serializable;
2626

diycode-app/src/main/java/com/gcssloop/diycode/adapter/sites/SitesProvider.java renamed to diycode-app/src/main/java/com/gcssloop/diycode/fragment/provider/SitesProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*
16-
* Last modified 2017-03-28 03:38:06
16+
* Last modified 2017-04-09 14:31:47
1717
*
1818
* GitHub: https://github.com/GcsSloop
1919
* Website: http://www.gcssloop.com
2020
* Weibo: http://weibo.com/GcsSloop
2121
*/
2222

23-
package com.gcssloop.diycode.adapter.sites;
23+
package com.gcssloop.diycode.fragment.provider;
2424

2525
import android.content.Context;
2626
import android.support.annotation.NonNull;

diycode-app/src/main/java/com/gcssloop/diycode/fragment/TextFragment.java renamed to diycode-app/src/main/java/com/gcssloop/diycode/test/TextFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*
16-
* Last modified 2017-03-08 01:01:18
16+
* Last modified 2017-04-09 14:15:03
1717
*
1818
* GitHub: https://github.com/GcsSloop
1919
* Website: http://www.gcssloop.com
2020
* Weibo: http://weibo.com/GcsSloop
2121
*/
2222

23-
package com.gcssloop.diycode.fragment;
23+
package com.gcssloop.diycode.test;
2424

2525
import android.os.Bundle;
2626
import android.support.annotation.NonNull;

diycode-app/src/main/java/com/gcssloop/diycode/utils/CrashHandler.java

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

2525
import android.content.Context;
2626

27+
import com.gcssloop.diycode_sdk.log.Logger;
28+
2729
public class CrashHandler implements Thread.UncaughtExceptionHandler {
2830
private static CrashHandler instance;
2931

@@ -45,6 +47,7 @@ public void init(Context ctx) {
4547
public void uncaughtException(Thread arg0, Throwable arg1) {
4648
arg1.printStackTrace();
4749
android.os.Process.killProcess(android.os.Process.myPid());
50+
Logger.e("Crash:" + arg1.toString());
4851
}
4952
}
5053

0 commit comments

Comments
 (0)