书架更新排序逻辑

This commit is contained in:
mwang 2019-07-15 20:57:26 +08:00
parent 7e820840fe
commit 6e4e60e984
9 changed files with 252 additions and 185 deletions

View File

@ -17,8 +17,8 @@ android {
// applicationId "com.zhushou.yueshu" // applicationId "com.zhushou.yueshu"
minSdkVersion 19 //target 19 Android 4.4 4.1% minSdkVersion 19 //target 19 Android 4.4 4.1%
targetSdkVersion 28 targetSdkVersion 28
versionCode 6 versionCode 1
versionName "v6.0" versionName "v1.0"
// testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@ -62,7 +62,7 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// versionCode 1 // versionCode 1
// versionName "v1.0" // versionName "v1.0"
/* applicationVariants.all { variant -> applicationVariants.all { variant ->
variant.outputs.all { output -> variant.outputs.all { output ->
def outFile = output.outputFile def outFile = output.outputFile
if (outFile != null && outFile.name.endsWith(".apk")) { if (outFile != null && outFile.name.endsWith(".apk")) {
@ -71,14 +71,14 @@ android {
outputFileName = fileName; outputFileName = fileName;
} }
} }
}*/ }
signingConfig signingConfigs.releaseConfig signingConfig signingConfigs.releaseConfig
} }
} }
// //
productFlavors { productFlavors {
// googleplay {} // googleplay {}
/* g { g {
applicationId "com.zhushou.yueshu" applicationId "com.zhushou.yueshu"
versionName "v1.0" versionName "v1.0"
buildConfigField "String", "MAIN_HOST", '"http://g.xiaoshuofenxiang.com/api/"' buildConfigField "String", "MAIN_HOST", '"http://g.xiaoshuofenxiang.com/api/"'
@ -88,7 +88,7 @@ android {
// //
productFlavors.all { flavor -> productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}*/ }
/* google { /* google {
applicationId "com.zhushou.yueshu" applicationId "com.zhushou.yueshu"
versionName "v1.0" versionName "v1.0"

View File

@ -197,8 +197,8 @@
<meta-data <meta-data
android:name="UMENG_APPKEY" android:name="UMENG_APPKEY"
android:value="5cd6238a570df375c3000cc9" /> <!-- <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/> --> android:value="5cd6238a570df375c3000cc9" /> <!-- <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/> -->
<meta-data android:name="UMENG_CHANNEL" android:value="debug" /> <!--<meta-data android:name="UMENG_CHANNEL" android:value="debug" />-->
<!--<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />--> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
<!-- google ad--> <!-- google ad-->
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 --> <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data <meta-data

View File

@ -343,7 +343,12 @@ public class CatalogFragment extends BasicFragment implements MarkActivity.Sortc
return; return;
if (mProgressDialog2.isShowing()) { if (mProgressDialog2.isShowing()) {
mProgressDialog2.dismiss(); try {
mProgressDialog2.dismiss();
}catch (Exception e){
Log.e(TAG, "hideProgressSelf: ",e );
}
} }
mSwipeRefresh.setRefreshing(false); mSwipeRefresh.setRefreshing(false);
} }

View File

@ -211,6 +211,7 @@ public class Fragment_Shelf extends BasicFragment {
public void onFault(String errorMsg) { public void onFault(String errorMsg) {
//失败 //失败
Log.d(TAG, "error on get novel update list: " + errorMsg); Log.d(TAG, "error on get novel update list: " + errorMsg);
Toast.makeText(activity,"获取更新服务失败",Toast.LENGTH_SHORT).show();
handler.sendEmptyMessage(1); handler.sendEmptyMessage(1);
} }
}; };
@ -426,7 +427,8 @@ public class Fragment_Shelf extends BasicFragment {
if(option!= Constants.SHELF_ORDER) { if(option!= Constants.SHELF_ORDER) {
Constants.SHELF_ORDER = option; Constants.SHELF_ORDER = option;
config.setShelfOrderOption(option); config.setShelfOrderOption(option);
getUpdatedData(); // getUpdatedData();
loadLocalData();
} }
} }
@ -442,6 +444,10 @@ public class Fragment_Shelf extends BasicFragment {
private void initDialog(int position) { private void initDialog(int position) {
Log.d(TAG, "initDialog: onlongclick " + bookLists.get(position).getName() );
bottomSheetDialog = new BottomSheetDialog(this.activity); bottomSheetDialog = new BottomSheetDialog(this.activity);
bottomSheetDialog.setContentView(R.layout.fragment_shelf_botoomsheetdialog); bottomSheetDialog.setContentView(R.layout.fragment_shelf_botoomsheetdialog);
//给布局设置透明背景色 //给布局设置透明背景色
@ -867,7 +873,10 @@ public class Fragment_Shelf extends BasicFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
loadLocalData();
getUpdatedData(); getUpdatedData();
if (bottomSheetDialog != null) { if (bottomSheetDialog != null) {
@ -882,6 +891,11 @@ public class Fragment_Shelf extends BasicFragment {
MobclickAgent.onPageEnd(TAG); MobclickAgent.onPageEnd(TAG);
} }
void loadLocalData(){
loadNovelsOnShelf();
fillData();
}
//----------toutiao ad //----------toutiao ad

View File

@ -35,31 +35,32 @@ import butterknife.BindView;
public class Fragment_booklist extends BasicFragment { public class Fragment_booklist extends BasicFragment {
public static final String TAG = Fragment_booklist.class.getSimpleName(); public static final String TAG = Fragment_booklist.class.getSimpleName();
private static final String EXTR_CATE ="cate" ; private static final String EXTR_CATE = "cate";
private static final String EXTR_PROGRESS ="progress" ; private static final String EXTR_PROGRESS = "progress";
private static final String EXTR_SEARCH ="search"; private static final String EXTR_SEARCH = "search";
private static final String EXTR_FN ="fn" ; private static final String EXTR_FN = "fn";
private static final String EXTR_BANGDAN ="bangdan" ; private static final String EXTR_BANGDAN = "bangdan";
private static final String EXTR_HISTORY ="history" ; private static final String EXTR_HISTORY = "history";
private static final String EXTR_CID ="cid" ; private static final String EXTR_CID = "cid";
private BookListAdapter mAdapter; private BookListAdapter mAdapter;
// private BookListAdapter mAdapter; // private BookListAdapter mAdapter;
private List mData;; private List mData;
;
private List mMoreData; private List mMoreData;
private String cate; private String cate;
private int progress,cid; private int progress, cid;
private String keyWord ,fn,bangdan,history; private String keyWord, fn, bangdan, history;
private int listItem =R.layout.recycle_list_item_horizon; private int listItem = R.layout.recycle_list_item_horizon;
//private int pageNo=1; //private int pageNo=1;
private int totalCount; private int totalCount;
// private int pageCount; // private int pageCount;
@BindView(R.id.rvBooklist) @BindView(R.id.rvBooklist)
RecyclerView mRecyclerView; RecyclerView mRecyclerView;
@SuppressLint("ValidFragment") @SuppressLint("ValidFragment")
public Fragment_booklist(String cate, int progress) { public Fragment_booklist(String cate, int progress) {
this.cate =cate; this.cate = cate;
this.progress = progress; this.progress = progress;
} }
@ -67,87 +68,95 @@ public class Fragment_booklist extends BasicFragment {
public Fragment_booklist() { public Fragment_booklist() {
// Required empty public constructor // Required empty public constructor
} }
public static Fragment_booklist newInstance(int cid,String bangdan) {
public static Fragment_booklist newInstance(int cid, String bangdan) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putInt(EXTR_CID,cid); args.putInt(EXTR_CID, cid);
args.putString(EXTR_BANGDAN,bangdan); args.putString(EXTR_BANGDAN, bangdan);
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist newInstance(String fn,String bangdan) {
public static Fragment_booklist newInstance(String fn, String bangdan) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(EXTR_FN,fn); args.putString(EXTR_FN, fn);
args.putString(EXTR_BANGDAN,bangdan); args.putString(EXTR_BANGDAN, bangdan);
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist newInstance(String noveType,int progress) {
public static Fragment_booklist newInstance(String noveType, int progress) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(EXTR_CATE,noveType); args.putString(EXTR_CATE, noveType);
args.putInt(EXTR_PROGRESS, progress); args.putInt(EXTR_PROGRESS, progress);
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist search(String keyWord) { public static Fragment_booklist search(String keyWord) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(EXTR_SEARCH,keyWord); args.putString(EXTR_SEARCH, keyWord);
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist history() { public static Fragment_booklist history() {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(EXTR_HISTORY,EXTR_HISTORY); args.putString(EXTR_HISTORY, EXTR_HISTORY);
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
protected void processArguments(){
protected void processArguments() {
if (getArguments() != null) { if (getArguments() != null) {
Bundle bundle = getArguments() ; Bundle bundle = getArguments();
bangdan =bundle.getString(EXTR_BANGDAN); bangdan = bundle.getString(EXTR_BANGDAN);
fn= bundle.getString(EXTR_FN); fn = bundle.getString(EXTR_FN);
cid =bundle.getInt(EXTR_CID); cid = bundle.getInt(EXTR_CID);
if(!TextUtils.isEmpty((fn))){ if (!TextUtils.isEmpty((fn))) {
return; return;
} }
cate = bundle.getString(EXTR_CATE); cate = bundle.getString(EXTR_CATE);
progress = bundle.getInt(EXTR_PROGRESS); progress = bundle.getInt(EXTR_PROGRESS);
keyWord =bundle.getString(EXTR_SEARCH); keyWord = bundle.getString(EXTR_SEARCH);
history =bundle.getString(EXTR_HISTORY); history = bundle.getString(EXTR_HISTORY);
if(!TextUtils.isEmpty(history)){ if (!TextUtils.isEmpty(history)) {
listItem =R.layout.recycle_list_item_history; listItem = R.layout.recycle_list_item_history;
} }
} }
} }
int lastPageNo =0; int lastPageNo = 0;
@Override
protected void fillData() {
if(mRecyclerView.getAdapter()==null) { @Override
protected void fillData() {
if (mRecyclerView.getAdapter() == null) {
mRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); mRecyclerView.setLayoutManager(new LinearLayoutManager(activity));
mRecyclerView.setAdapter(mAdapter); mRecyclerView.setAdapter(mAdapter);
} }
if (mMoreData != null) {
if(mMoreData!=null) { if (mMoreData.size() > 0) {
if(mMoreData.size()>0) {
pageNo++; pageNo++;
} }
int status =getPageCount()>= pageNo ? BookListAdapter.PULLUP_LOAD_MORE : BookListAdapter.NO_LOAD_MORE; int status = getPageCount() >= pageNo ? BookListAdapter.PULLUP_LOAD_MORE : BookListAdapter.NO_LOAD_MORE;
// mAdapter.setPercent(pageNo/pageCount); // mAdapter.setPercent(pageNo/pageCount);
mAdapter.AddFooterItem(mMoreData); mAdapter.AddFooterItem(mMoreData);
mAdapter.changeMoreStatus(status); mAdapter.changeMoreStatus(status);
mMoreData.clear(); mMoreData.clear();
} }
mAdapter.setNorecord(R.string.noRecord);
} }
@Override @Override
@ -156,54 +165,61 @@ public class Fragment_booklist extends BasicFragment {
} }
@Override @Override
public void initData() { public void initData() {
if(pageNo>1){
if(lastPageNo ==pageNo){ if (pageNo > 1) {
if (lastPageNo == pageNo) {
return; return;
} }
} }
lastPageNo = pageNo; lastPageNo = pageNo;
// int pn = pageNo; // int pn = pageNo;
if(pageNo==1) { if (pageNo == 1) {
noveIds = new ArrayList<Integer>(); noveIds = new ArrayList<Integer>();
if (mData != null) { //下拉刷新 if (mData != null) { //下拉刷新
mData = new ArrayList<Novel>(); mData = new ArrayList<Novel>();
mAdapter.setData(mData); mAdapter.setData(mData);
// loadListAd(mAdapter,1,false); // loadListAd(mAdapter,1,false);
} else { } else {
initialDataAdapter(); initialDataAdapter();
}
} }
}
if (mAdapter != null) {
mAdapter.setNorecord(R.string.msgLoading);
}
/* if(mAdapter!=null){ /* if(mAdapter!=null){
mAdapter.changeMoreStatus(BookListAdapter.LOADING_MORE); mAdapter.changeMoreStatus(BookListAdapter.LOADING_MORE);
}*/ }*/
mMoreData =null; mMoreData = null;
OnSuccessAndFaultListener successAndFaultListener = new OnSuccessAndFaultListener() { OnSuccessAndFaultListener successAndFaultListener = new OnSuccessAndFaultListener() {
@Override @Override
public void onSuccess(String result) { public void onSuccess(String result) {
// mFirstPage= gson.fromJson(result, FirstPage.class); // mFirstPage= gson.fromJson(result, FirstPage.class);
try { try {
JSONObject jsonObject = new JSONObject(result); JSONObject jsonObject = new JSONObject(result);
setPageCount(jsonObject.getInt("pageCount")); ; setPageCount(jsonObject.getInt("pageCount"));
List<Novel> list = GsonUtil. parserJsonArray(jsonObject,Constants.BLOCK_TITLE_NOVELS); ;
mMoreData =new ArrayList<Novel>(); List<Novel> list = GsonUtil.parserJsonArray(jsonObject, Constants.BLOCK_TITLE_NOVELS);
for(Novel novel :list){ mMoreData = new ArrayList<Novel>();
if(!noveIds.contains(novel.getNovelId())){ for (Novel novel : list) {
if (!noveIds.contains(novel.getNovelId())) {
mMoreData.add(novel); mMoreData.add(novel);
noveIds.add(novel.getNovelId()); noveIds.add(novel.getNovelId());
} }
} }
if(mMoreData.size()>0){ if (mMoreData.size() > 0) {
loadListAd(mAdapter,1,mData.size()>0); loadListAd(mAdapter, 1, mData.size() > 0);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); Log.e(TAG, "onSuccess: 解析失败",e ); e.printStackTrace();
Log.e(TAG, "onSuccess: 解析失败", e);
} }
handler.sendEmptyMessage(1); handler.sendEmptyMessage(1);
@ -217,41 +233,39 @@ public class Fragment_booklist extends BasicFragment {
} }
}; };
showProgressDialog(false,"正在加载..."); showProgressDialog(false, "正在加载...");
Log.d(TAG,String.format("fn is %s",fn) ); Log.d(TAG, String.format("fn is %s", fn));
if(!TextUtils.isEmpty(bangdan) && (cid >0 || !TextUtils.isEmpty(fn))){ //榜单 if (!TextUtils.isEmpty(bangdan) && (cid > 0 || !TextUtils.isEmpty(fn))) { //榜单
// showProgressDialog(true, "正在加载榜单"); // showProgressDialog(true, "正在加载榜单");
mAdapter.setShowTop(true); mAdapter.setShowTop(true);
BookSubscribe.getPaihangBangList(Constants.SEX,pageNo,cid,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { BookSubscribe.getPaihangBangList(Constants.SEX, pageNo, cid, new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override @Override
public void onSuccess(String result) { public void onSuccess(String result) {
try { try {
JSONObject jsonObject = new JSONObject(result); JSONObject jsonObject = new JSONObject(result);
String resultstr = jsonObject.getString("rank") ; String resultstr = jsonObject.getString("rank");
setPageCount(jsonObject.getJSONObject("rank").getInt("pageCount")); ; setPageCount(jsonObject.getJSONObject("rank").getInt("pageCount"));
List<Novel> list = GsonUtil. parserJsonArray(resultstr,Constants.BLOCK_TITLE_NOVELS); ;
mMoreData =new ArrayList<Novel>(); List<Novel> list = GsonUtil.parserJsonArray(resultstr, Constants.BLOCK_TITLE_NOVELS);
for(Novel novel :list){ mMoreData = new ArrayList<Novel>();
if(!noveIds.contains(novel.getNovelId())){ for (Novel novel : list) {
if (!noveIds.contains(novel.getNovelId())) {
mMoreData.add(novel); mMoreData.add(novel);
noveIds.add(novel.getNovelId()); noveIds.add(novel.getNovelId());
} }
} }
Log.d(TAG, "排行榜详细 onSuccess: pageCount " + getPageCount()); Log.d(TAG, "排行榜详细 onSuccess: pageCount " + getPageCount());
if(mMoreData.size()>0){ if (mMoreData.size() > 0) {
loadListAd(mAdapter,1,mData.size()>0); loadListAd(mAdapter, 1, mData.size() > 0);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Log.e(TAG, "onSuccess: 解析失败",e ); Log.e(TAG, "onSuccess: 解析失败", e);
} }
Log.d(TAG, "progress: progress to hide"); Log.d(TAG, "progress: progress to hide");
handler.sendEmptyMessage(1); handler.sendEmptyMessage(1);
@ -267,24 +281,23 @@ public class Fragment_booklist extends BasicFragment {
}, getActivity())); }, getActivity()));
}else if(!TextUtils.isEmpty(fn)){ //首页 更多 } else if (!TextUtils.isEmpty(fn)) { //首页 更多
mAdapter.setShowTop(true); mAdapter.setShowTop(true);
// showProgressDialog(true, "正在加载更多"); // showProgressDialog(true, "正在加载更多");
BookSubscribe.getNovelPaihang(fn,pageNo,Constants.SEX,new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); BookSubscribe.getNovelPaihang(fn, pageNo, Constants.SEX, new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
} } else if (!TextUtils.isEmpty((cate))) { //分类
else if(!TextUtils.isEmpty((cate))) { //分类
mAdapter.setShowTop(true); mAdapter.setShowTop(true);
// showProgressDialog(true, "正在加载分类"); // showProgressDialog(true, "正在加载分类");
BookSubscribe.getCateNovelList(cate, pageNo, Constants.SEX, progress, new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); BookSubscribe.getCateNovelList(cate, pageNo, Constants.SEX, progress, new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
}else if(!TextUtils.isEmpty(keyWord)){ //搜索 } else if (!TextUtils.isEmpty(keyWord)) { //搜索
// showProgressDialog(true, "正在加载搜索"); // showProgressDialog(true, "正在加载搜索");
// mAdapter.setShowTop(true); // mAdapter.setShowTop(true);
BookSubscribe.getSearchNovelList( keyWord,pageNo, Constants.SEX, new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); BookSubscribe.getSearchNovelList(keyWord, pageNo, Constants.SEX, new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
}else if(!TextUtils.isEmpty(history)){ } else if (!TextUtils.isEmpty(history)) {
loadHistory(); loadHistory();
}else{ } else {
handler.sendEmptyMessage(1); handler.sendEmptyMessage(1);
} }
@ -297,8 +310,8 @@ public class Fragment_booklist extends BasicFragment {
@Override @Override
public void onItemClick(View view, int position) { public void onItemClick(View view, int position) {
if(mData.get(position) instanceof Novel) if (mData.get(position) instanceof Novel)
showBookDetail((Novel)mData.get(position)); showBookDetail((Novel) mData.get(position));
// openBook(mData.get(position),mAdapter); // openBook(mData.get(position),mAdapter);
} }
@ -321,7 +334,7 @@ public class Fragment_booklist extends BasicFragment {
} }
@Override @Override
public void initViews(){ public void initViews() {
//mRecyclerView //mRecyclerView
//lv_catalogue.setFastScrollStyle(R.style.FastScrollTheme); //不起作用 //lv_catalogue.setFastScrollStyle(R.style.FastScrollTheme); //不起作用
@ -333,6 +346,7 @@ public class Fragment_booklist extends BasicFragment {
void initialBookList() { void initialBookList() {
} }
@Override @Override
public void setFTag() { public void setFTag() {
@ -341,22 +355,23 @@ public class Fragment_booklist extends BasicFragment {
private void initLoadMoreListener() { private void initLoadMoreListener() {
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
int lastVisibleItem ; int lastVisibleItem;
@Override @Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) { public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState); super.onScrollStateChanged(recyclerView, newState);
Log.d(TAG, String.format("onScrollStateChanged , state %s ,lastVisibleitem %s ,getItemCount %s,pageno %s ,getPageCount() %s", Log.d(TAG, String.format("onScrollStateChanged , state %s ,lastVisibleitem %s ,getItemCount %s,pageno %s ,getPageCount() %s",
newState==RecyclerView.SCROLL_STATE_IDLE,lastVisibleItem,mAdapter.getItemCount(),pageNo,getPageCount())); newState == RecyclerView.SCROLL_STATE_IDLE, lastVisibleItem, mAdapter.getItemCount(), pageNo, getPageCount()));
//判断RecyclerView的状态 是空闲时同时是最后一个可见的ITEM时才加载 //判断RecyclerView的状态 是空闲时同时是最后一个可见的ITEM时才加载
if(newState==RecyclerView.SCROLL_STATE_IDLE&&lastVisibleItem+1==mAdapter.getItemCount()){ if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem + 1 == mAdapter.getItemCount()) {
if(pageNo <= getPageCount()) { if (pageNo <= getPageCount()) {
//设置正在加载更多 //设置正在加载更多
mAdapter.changeMoreStatus(mAdapter.LOADING_MORE); mAdapter.changeMoreStatus(mAdapter.LOADING_MORE);
//改为网络请求 //改为网络请求
initData(); initData();
}else{ } else {
mAdapter.changeMoreStatus(mAdapter.NO_LOAD_MORE); mAdapter.changeMoreStatus(mAdapter.NO_LOAD_MORE);
} }
@ -370,52 +385,52 @@ public class Fragment_booklist extends BasicFragment {
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
//最后一个可见的ITEM //最后一个可见的ITEM
lastVisibleItem=layoutManager.findLastVisibleItemPosition(); lastVisibleItem = layoutManager.findLastVisibleItemPosition();
} }
}); });
} }
void loadHistory(){
void loadHistory() {
initialDataAdapter(); initialDataAdapter();
new Thread() { new Thread() {
@Override @Override
public void run() { public void run() {
super.run(); super.run();
mMoreData = Novel.getNovelsHistory(); mMoreData = Novel.getNovelsHistory();
setPageCount(1); setPageCount(1);
// //
handler.sendEmptyMessage(1); handler.sendEmptyMessage(1);
if(mMoreData!=null && mMoreData.size()>5) { if (mMoreData != null && mMoreData.size() > 5) {
loadListAd(mAdapter, 1, mData.size() > 0); loadListAd(mAdapter, 1, mData.size() > 0);
} }
} }
}.start(); }.start();
} }
boolean isFirstLoad =true;
@Override
public void onResume(){
super.onResume();
// pageNo=1;
if(!TextUtils.isEmpty(history)){ boolean isFirstLoad = true;
if(isFirstLoad) {
isFirstLoad=false; @Override
}else{ public void onResume() {
initData(); super.onResume();
} // pageNo=1;
if (!TextUtils.isEmpty(history)) {
if (isFirstLoad) {
isFirstLoad = false;
} else {
initData();
}
} }
MobclickAgent.onPageStart(TAG); MobclickAgent.onPageStart(TAG);
} }
@Override @Override
public void onPause(){ public void onPause() {
super.onPause(); super.onPause();
MobclickAgent.onPageEnd(TAG); MobclickAgent.onPageEnd(TAG);
} }
} }

View File

@ -104,7 +104,9 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
} }
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
if(mAdapter!=null) {
mAdapter.setNorecord(R.string.noRecord);
}
} }
public static Fragment_paihang newInstance(String param1, String param2) { public static Fragment_paihang newInstance(String param1, String param2) {
@ -131,15 +133,18 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
@Override @Override
public void initData() { public void initData() {
loadSearchData(); loadSearchData();
} }
private void loadSearchData(){ private void loadSearchData(){
if(mAdapter!=null) {
try{ mAdapter.setNorecord(R.string.msgLoading);
}
/* try{
throw new Exception(); throw new Exception();
}catch (Exception e){ }catch (Exception e){
Log.e(TAG, "loadSearchData: ", e); Log.e(TAG, "loadSearchData: ", e);
} }*/
int pn = pageNo; int pn = pageNo;

View File

@ -502,11 +502,11 @@ public class BookUtil {
public void setChapterNo(int chapterNo) { public void setChapterNo(int chapterNo) {
try{ /* try{
throw new Exception(); throw new Exception();
}catch (Exception e){ }catch (Exception e){
Log.e(TAG, "prepare book setChapterNo: who set chaptno "+ chapterNo,e ); Log.e(TAG, "prepare book setChapterNo: who set chaptno "+ chapterNo,e );
} }*/
this.chapterNo = chapterNo; this.chapterNo = chapterNo;
@ -527,6 +527,9 @@ public class BookUtil {
return mChangeChapId; return mChangeChapId;
} }
// chapterNo=1; // chapterNo=1;
if(mChapters.size()>0){
return 1;
}
} }
chapterNo = chapterNo<=0 ?1 :chapterNo; chapterNo = chapterNo<=0 ?1 :chapterNo;

View File

@ -187,20 +187,17 @@ public class GsonUtil {
//遍历JsonArray对象 //遍历JsonArray对象
Iterator it = jsonArray.iterator(); Iterator it = jsonArray.iterator();
// int lastNoveId =0;
List<Integer> ids = new ArrayList<Integer>(); List<Integer> ids = new ArrayList<Integer>();
while (it.hasNext()) { while (it.hasNext()) {
JsonElement e = (JsonElement) it.next(); JsonElement e = (JsonElement) it.next();
//JsonElement转换为JavaBean对象 //JsonElement转换为JavaBean对象
Novel nv = (Novel) gson.fromJson(e, Novel.class); Novel nv = (Novel) gson.fromJson(e, Novel.class);
if(ids.contains(nv.getNovelId())){ if (nv == null || ids.contains(nv.getNovelId())) {
continue; continue;
} }
ids.add(nv.getNovelId()); ids.add(nv.getNovelId());
// lastNoveId =nv.getNovelId(); list.add((Novel) gson.fromJson(e, Novel.class));
if(nv!=null) {
list.add((Novel) gson.fromJson(e, Novel.class));
}
} }
return list; return list;
} }

View File

@ -8,39 +8,81 @@
</facet> </facet>
<facet type="android" name="Android"> <facet type="android" name="Android">
<configuration> <configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" /> <option name="SELECTED_BUILD_VARIANT" value="gDebug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleGDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileGDebugSources" />
<afterSyncTasks> <afterSyncTasks>
<task>generateDebugSources</task> <task>generateGDebugSources</task>
</afterSyncTasks> </afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/resValues/debug" /> <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/resValues/g/debug" />
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" /> <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration> </configuration>
</facet> </facet>
</component> </component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" /> <output url="file://$MODULE_DIR$/build/intermediates/javac/gDebug/compileGDebugJavaWithJavac/classes" />
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" /> <output-test url="file://$MODULE_DIR$/build/intermediates/javac/gDebugUnitTest/compileGDebugUnitTestJavaWithJavac/classes" />
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/g/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/gDebug/compileGDebugAidl/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/g/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/gDebug/compileGDebugRenderscript/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/g/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/g/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/g/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/gDebugAndroidTest/compileGDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/g/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/gDebugAndroidTest/compileGDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/g/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/g/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/g/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/g/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/g/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/g/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/g/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/g/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/g/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/g/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
@ -88,26 +130,16 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/duplicate_classes_check" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/duplicate_classes_check" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_app_info_output_file" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_main_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" />
@ -118,15 +150,11 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-files" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-files" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res_stripped" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res_stripped" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" /> <excludeFolder url="file://$MODULE_DIR$/build/outputs" />