Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Jun 5, 2024. It is now read-only.

Commit ba94cba

Browse files
committed
添加排行榜
1 parent 7ec15ad commit ba94cba

File tree

27 files changed

+876
-29
lines changed

27 files changed

+876
-29
lines changed

‎module-basic/src/main/java/com/rae/cnblogs/basic/BasicFragment.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import android.view.View;
1010
import android.view.ViewGroup;
1111

12-
import com.umeng.analytics.MobclickAgent;
13-
1412
import java.util.List;
1513

1614
import butterknife.ButterKnife;
@@ -27,6 +25,19 @@ public abstract class BasicFragment extends Fragment implements IPresenterView {
2725
public void onCreate(@Nullable Bundle savedInstanceState) {
2826
super.onCreate(savedInstanceState);
2927
mPageName = getClass().getSimpleName();
28+
Bundle arguments = getArguments();
29+
if (arguments != null) {
30+
onReceiveArguments(arguments);
31+
}
32+
}
33+
34+
/**
35+
* 接收参数
36+
*
37+
* @param arguments 参数
38+
*/
39+
protected void onReceiveArguments(@NonNull Bundle arguments) {
40+
3041
}
3142

3243
@Nullable

‎module-discover/src/main/AndroidManifest.xml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
<activity
66
android:name=".ui.AntUserAuthActivity"
77
android:windowSoftInputMode="adjustPan">
8-
<intent-filter>
9-
<action android:name="android.intent.action.MAIN" />
10-
<category android:name="android.intent.category.LAUNCHER" />
11-
</intent-filter>
8+
<!--<intent-filter>-->
9+
<!--<action android:name="android.intent.action.MAIN" />-->
10+
<!--<category android:name="android.intent.category.LAUNCHER" />-->
11+
<!--</intent-filter>-->
1212
</activity>
1313
<activity
1414
android:name=".ui.AntUserContractActivity"
@@ -17,5 +17,7 @@
1717
android:name=".ui.AntUserSmsCodeActivity"
1818
android:windowSoftInputMode="stateVisible|adjustPan" />
1919
<activity android:name=".ui.AntAuthResultActivity" />
20+
<activity
21+
android:name=".ui.RankingActivity"/>
2022
</application>
2123
</manifest>
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.rae.cnblogs.discover;
2+
3+
import android.content.Context;
4+
import android.support.annotation.NonNull;
5+
import android.support.annotation.Nullable;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
9+
import com.chad.library.adapter.base.BaseQuickAdapter;
10+
import com.chad.library.adapter.base.BaseViewHolder;
11+
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
12+
import com.rae.cnblogs.widget.PlaceholderView;
13+
14+
import java.util.List;
15+
16+
public abstract class RaeBaseQuickAdapter<T, K extends BaseViewHolder> extends BaseQuickAdapter<T, K> {
17+
18+
@NonNull
19+
private PlaceholderView mPlaceholderView;
20+
21+
public RaeBaseQuickAdapter(Context context, int layoutResId, @Nullable List<T> data) {
22+
super(layoutResId, data);
23+
initView(context);
24+
}
25+
26+
public RaeBaseQuickAdapter(Context context, @Nullable List<T> data) {
27+
super(data);
28+
initView(context);
29+
}
30+
31+
public RaeBaseQuickAdapter(Context context, int layoutResId) {
32+
super(layoutResId);
33+
initView(context);
34+
}
35+
36+
@NonNull
37+
@Override
38+
public K onCreateViewHolder(ViewGroup parent, int viewType) {
39+
40+
return super.onCreateViewHolder(parent, viewType);
41+
}
42+
43+
protected void initView(Context context) {
44+
mPlaceholderView = new PlaceholderView(context);
45+
mPlaceholderView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
46+
setEmptyView(mPlaceholderView);
47+
48+
}
49+
50+
@Override
51+
protected K createBaseViewHolder(View view) {
52+
if (view == getEmptyView()) {
53+
int padding = QMUIDisplayHelper.dp2px(view.getContext(), 20);
54+
view.setPadding(padding, padding, padding, padding);
55+
}
56+
return super.createBaseViewHolder(view);
57+
}
58+
59+
@Override
60+
public void setNewData(@Nullable List<T> data) {
61+
super.setNewData(data);
62+
dismissLoading();
63+
}
64+
65+
private void dismissLoading() {
66+
mPlaceholderView.empty();
67+
}
68+
69+
public void showLoading() {
70+
mPlaceholderView.loading();
71+
}
72+
73+
}
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
package com.rae.cnblogs.discover.fragment;
2+
3+
import android.content.Context;
4+
import android.os.Bundle;
5+
import android.support.annotation.NonNull;
6+
import android.support.annotation.Nullable;
7+
import android.support.v7.widget.LinearLayoutManager;
8+
import android.support.v7.widget.RecyclerView;
9+
import android.view.View;
10+
import android.view.ViewGroup;
11+
import android.widget.TextView;
12+
13+
import com.chad.library.adapter.base.BaseQuickAdapter;
14+
import com.chad.library.adapter.base.BaseViewHolder;
15+
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
16+
import com.rae.cnblogs.AppRoute;
17+
import com.rae.cnblogs.basic.BasicFragment;
18+
import com.rae.cnblogs.discover.R;
19+
import com.rae.cnblogs.discover.R2;
20+
import com.rae.cnblogs.discover.RaeBaseQuickAdapter;
21+
import com.rae.cnblogs.discover.presenter.IRankingContract;
22+
import com.rae.cnblogs.discover.presenter.RankingPresenterImpl;
23+
import com.rae.cnblogs.sdk.bean.HotSearchBean;
24+
25+
import java.util.List;
26+
27+
import butterknife.BindView;
28+
29+
public class RankingFragment extends BasicFragment implements IRankingContract.View, BaseQuickAdapter.OnItemClickListener {
30+
31+
32+
/**
33+
* @param type {@link com.rae.cnblogs.discover.presenter.IRankingContract#TYPE_HOT_SEARCH}
34+
*/
35+
public static RankingFragment newInstance(int type) {
36+
Bundle args = new Bundle();
37+
args.putInt("type", type);
38+
RankingFragment fragment = new RankingFragment();
39+
fragment.setArguments(args);
40+
return fragment;
41+
}
42+
43+
44+
// @BindView(R2.id.refresh_layout)
45+
// AppLayout mRefreshLayout;
46+
47+
@BindView(R2.id.recycler_view)
48+
RecyclerView mRecyclerView;
49+
50+
private RankingAdapter mAdapter;
51+
private int mType;
52+
private IRankingContract.Presenter mPresenter;
53+
54+
@Override
55+
protected int getLayoutId() {
56+
return R.layout.fm_ranking;
57+
}
58+
59+
@Override
60+
protected void onReceiveArguments(@NonNull Bundle arguments) {
61+
super.onReceiveArguments(arguments);
62+
mType = arguments.getInt("type");
63+
}
64+
65+
@Override
66+
public void onCreate(@Nullable Bundle savedInstanceState) {
67+
super.onCreate(savedInstanceState);
68+
mPresenter = new RankingPresenterImpl(this);
69+
}
70+
71+
72+
@Override
73+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
74+
super.onViewCreated(view, savedInstanceState);
75+
// 初始化View
76+
mAdapter = new RankingAdapter(view.getContext());
77+
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
78+
mRecyclerView.setAdapter(mAdapter);
79+
mAdapter.setEnableLoadMore(true);
80+
mAdapter.openLoadAnimation();
81+
mAdapter.isFirstOnly(true);
82+
mAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
83+
@Override
84+
public void onLoadMoreRequested() {
85+
mPresenter.loadMore();
86+
}
87+
}, mRecyclerView);
88+
mAdapter.setOnItemClickListener(this);
89+
// mRefreshLayout.setEnabled(false);
90+
91+
// mRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
92+
// @Override
93+
// public void onRefresh() {
94+
// mPresenter.start();
95+
// }
96+
// });
97+
98+
// mRefreshLayout.setPtrHandler(new PtrDefaultHandler() {
99+
// @Override
100+
// public void onRefreshBegin(PtrFrameLayout frame) {
101+
// mPresenter.start();
102+
// }
103+
// });
104+
105+
}
106+
107+
@Override
108+
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
109+
super.onActivityCreated(savedInstanceState);
110+
mPresenter.start();
111+
}
112+
113+
@Override
114+
public int getType() {
115+
return mType;
116+
}
117+
118+
@Override
119+
public void onNoMoreData() {
120+
// mRefreshLayout.setRefreshing(false);
121+
// mRefreshLayout.refreshComplete();
122+
mAdapter.loadMoreEnd();
123+
}
124+
125+
@Override
126+
public void onEmptyData(String msg) {
127+
mAdapter.setNewData(null);
128+
onNoMoreData();
129+
}
130+
131+
@Override
132+
public void onLoadData(List<HotSearchBean> data) {
133+
mAdapter.replaceData(data);
134+
135+
// mRefreshLayout.refreshComplete();
136+
// mRefreshLayout.setRefreshing(false);
137+
mAdapter.loadMoreComplete();
138+
}
139+
140+
@Override
141+
public void onLoginExpired() {
142+
// 不用实现
143+
}
144+
145+
@Override
146+
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
147+
// ITEM 点击事件
148+
int type = mType;
149+
HotSearchBean item = mAdapter.getItem(position);
150+
if (item == null) return;
151+
152+
if (type == IRankingContract.TYPE_HOT_SEARCH) {
153+
AppRoute.routeToSearch(getContext(), 0, item.getName());
154+
}
155+
156+
}
157+
158+
private class RankingAdapter extends RaeBaseQuickAdapter<HotSearchBean, BaseViewHolder> {
159+
160+
RankingAdapter(Context context) {
161+
super(context, R.layout.item_ranking, null);
162+
}
163+
164+
@Override
165+
protected void convert(BaseViewHolder helper, HotSearchBean item) {
166+
int position = helper.getLayoutPosition();
167+
TextView positionView = helper.getView(R.id.tv_position);
168+
TextView titleView = helper.getView(R.id.tv_title);
169+
TextView rankingView = helper.getView(R.id.tv_sub_num);
170+
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) helper.itemView.getLayoutParams();
171+
params.topMargin = position == 0 ? QMUIDisplayHelper.dp2px(helper.itemView.getContext(), 12) : 0;
172+
positionView.setSelected(position < 3);
173+
174+
positionView.setText(String.valueOf(position + 1));
175+
titleView.setText(item.getName());
176+
rankingView.setText(item.getRanking());
177+
}
178+
}
179+
}

‎module-discover/src/main/java/com/rae/cnblogs/discover/auth/AntUserAuthPresenterImpl.java renamed to ‎module-discover/src/main/java/com/rae/cnblogs/discover/presenter/AntUserAuthPresenterImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.rae.cnblogs.discover.auth;
1+
package com.rae.cnblogs.discover.presenter;
22

33
import android.support.annotation.Nullable;
44

@@ -9,13 +9,13 @@
99
import com.rae.cnblogs.discover.AntCodeBasicPresenter;
1010
import com.rae.cnblogs.discover.AntSdkDefaultObserver;
1111

12-
public class AntUserAuthPresenterImpl extends AntCodeBasicPresenter<AntUserAuthContract.View> implements AntUserAuthContract.Presenter {
12+
public class AntUserAuthPresenterImpl extends AntCodeBasicPresenter<IAntUserAuthContract.View> implements IAntUserAuthContract.Presenter {
1313

1414
private IAntUserApi mAntUserApi;
1515
@Nullable
1616
private AntAppConfigInfo mAntAppConfigInfo;
1717

18-
public AntUserAuthPresenterImpl(AntUserAuthContract.View view) {
18+
public AntUserAuthPresenterImpl(IAntUserAuthContract.View view) {
1919
super(view);
2020
mAntUserApi = AntCodeSDK.getInstance().getUserApi();
2121
}

‎module-discover/src/main/java/com/rae/cnblogs/discover/auth/AntUserAuthContract.java renamed to ‎module-discover/src/main/java/com/rae/cnblogs/discover/presenter/IAntUserAuthContract.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.rae.cnblogs.discover.auth;
1+
package com.rae.cnblogs.discover.presenter;
22

33
import com.rae.cnblogs.basic.IPresenter;
44
import com.rae.cnblogs.basic.IPresenterView;
55

6-
public interface AntUserAuthContract {
6+
public interface IAntUserAuthContract {
77

88
interface Presenter extends IPresenter {
99
void send();
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.rae.cnblogs.discover.presenter;
2+
3+
import com.rae.cnblogs.basic.IPageView;
4+
import com.rae.cnblogs.basic.IPresenter;
5+
import com.rae.cnblogs.basic.IPresenterView;
6+
import com.rae.cnblogs.sdk.bean.HotSearchBean;
7+
8+
public interface IRankingContract {
9+
10+
// 热搜
11+
int TYPE_HOT_SEARCH = 0;
12+
// 阅读
13+
int TYPE_TOP_READ = 1;
14+
// 收藏
15+
int TYPE_TOP_FAVORITE = 2;
16+
// 大神
17+
int TYPE_TOP_AUTHOR = 3;
18+
19+
interface Presenter extends IPresenter {
20+
21+
void loadMore();
22+
23+
}
24+
25+
interface View extends IPresenterView, IPageView<HotSearchBean> {
26+
27+
/**
28+
* 参考 静态变量
29+
* {@link #TYPE_HOT_SEARCH}
30+
*/
31+
int getType();
32+
}
33+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /