From 0e5e8968d6dfaf7efe3239226bd0815be1e230e5 Mon Sep 17 00:00:00 2001 From: mwang <8205347@qq.com> Date: Wed, 17 Apr 2019 23:28:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=8B=89=E5=88=B7=E6=96=B0=20fix=20bu?= =?UTF-8?q?gs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/Activity_cate_books.java | 21 ++-- .../android/Fragments/BasicFragment.java | 9 +- .../android/Fragments/Fragment_bangdan.java | 82 ++++++++------ .../android/Fragments/Fragment_bookStore.java | 3 +- .../android/Fragments/Fragment_booklist.java | 107 ++++++++++++------ .../android/Fragments/Fragment_jingxuan.java | 62 ++++++++-- .../android/Fragments/Fragment_paihang.java | 3 +- .../android/adapter/BandanAdapterNew.java | 51 +++++++-- .../android/adapter/BookListAdapter.java | 68 +++++++++-- .../android/netutils/HttpMethods.java | 2 +- .../netutils/OnSuccessAndFaultSub.java | 1 + zhuike/src/main/res/layout/app_bar_main2.xml | 4 +- .../res/layout/content_activity_cates.xml | 13 ++- .../res/layout/fragment_fragment__shelf.xml | 6 +- .../res/layout/fragment_fragment_bangdan.xml | 4 +- .../res/layout/fragment_fragment_booklist.xml | 2 +- .../src/main/res/layout/fragment_jingxuan.xml | 23 ++-- .../res/layout/load_more_footview_layout.xml | 14 ++- .../res/layout/recycle_list_empty_item.xml | 35 ++---- .../src/main/res/layout/recycle_list_item.xml | 7 +- .../res/layout/recycle_list_item_bangdan.xml | 7 +- .../res/layout/recycle_list_item_cates.xml | 12 +- .../res/layout/recycle_list_item_horizon.xml | 6 +- .../res/layout/recycle_list_noshow_item.xml | 13 +++ zhuike/src/main/res/values/dimens.xml | 1 + zhuike/src/main/res/values/strings.xml | 1 + zhuike/src/main/res/values/styles.xml | 3 +- 27 files changed, 383 insertions(+), 177 deletions(-) create mode 100644 zhuike/src/main/res/layout/recycle_list_noshow_item.xml diff --git a/zhuike/src/main/java/com/novelbook/android/Activity_cate_books.java b/zhuike/src/main/java/com/novelbook/android/Activity_cate_books.java index 8e0976b..0c2b4ff 100644 --- a/zhuike/src/main/java/com/novelbook/android/Activity_cate_books.java +++ b/zhuike/src/main/java/com/novelbook/android/Activity_cate_books.java @@ -10,6 +10,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; +import com.novelbook.android.Fragments.BasicFragment; import com.novelbook.android.Fragments.Fragment_booklist; import com.novelbook.android.Fragments.Fragment_shudan_list; import com.flyco.tablayout.SlidingTabLayout; @@ -26,7 +27,7 @@ public class Activity_cate_books extends Activity_base { @BindView(R.id.tab_layout) SlidingTabLayout tabLayout; String cate=""; - private ArrayList mFragments; + private ArrayList mFragments; ArrayList mList; String[] mTitle; public static String TAG="com.novelbook.android.Activity_cate_books"; @@ -57,17 +58,17 @@ public class Activity_cate_books extends Activity_base { void initTabs() { - if(mFragments ==null || mFragments.size() ==0){ + if (mFragments == null || mFragments.size() == 0) { mTitle = new String[]{"新书", "连载", "完本"}; - mFragments = new ArrayList<>(); + mFragments = new ArrayList(); - mFragments.add( Fragment_booklist.newInstance(cate,1)); - mFragments.add( Fragment_booklist.newInstance(cate,2)); - mFragments.add( Fragment_booklist.newInstance(cate,3)); + mFragments.add(Fragment_booklist.newInstance(cate, 1)); + mFragments.add(Fragment_booklist.newInstance(cate, 2)); + mFragments.add(Fragment_booklist.newInstance(cate, 3)); - Log.d(TAG,"initial fragments in tabs "); + Log.d(TAG, "initial fragments in tabs "); } - Log.d(TAG,"set viewPager adapter "); + Log.d(TAG, "set viewPager adapter "); // FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(activity.getSupportFragmentManager()) { 第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失 https://blog.csdn.net/allan_bst/article/details/64920076 FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override @@ -79,6 +80,7 @@ public class Activity_cate_books extends Activity_base { public int getCount() { return mFragments.size(); } + //ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text @Override public CharSequence getPageTitle(int position) { @@ -86,13 +88,14 @@ public class Activity_cate_books extends Activity_base { } }; mViewpager.setAdapter(mAdapter); + mViewpager.setOffscreenPageLimit(3); + tabLayout.setViewPager(mViewpager); // tabLayout.setViewPager(mViewpager, mTitle, activity, mFragments); mViewpager.setCurrentItem(0); - } @Override diff --git a/zhuike/src/main/java/com/novelbook/android/Fragments/BasicFragment.java b/zhuike/src/main/java/com/novelbook/android/Fragments/BasicFragment.java index b50eb8b..a799716 100644 --- a/zhuike/src/main/java/com/novelbook/android/Fragments/BasicFragment.java +++ b/zhuike/src/main/java/com/novelbook/android/Fragments/BasicFragment.java @@ -74,6 +74,8 @@ public abstract class BasicFragment extends Fragment { public static String TAG = "need to be replaced"; protected View rootView; + protected int pageNo=1; + protected int pageCount; protected abstract int getLayoutRes(); protected abstract void initData(); protected abstract void fillData(); @@ -256,9 +258,7 @@ public abstract class BasicFragment extends Fragment { // 开始刷新,设置当前为刷新状态 //swipeRefreshLayout.setRefreshing(true); - - // 这里是主线程 - // 一些比较耗时的操作,比如联网获取数据,需要放到子线程去执行 + pageNo=1; initData(); // TODO 获取数据 @@ -366,4 +366,7 @@ public abstract class BasicFragment extends Fragment { public void reload() { initViews(); } + public void loadData() { + initData(); + } //on tab changed } diff --git a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bangdan.java b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bangdan.java index b592f11..e15ec53 100644 --- a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bangdan.java +++ b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bangdan.java @@ -8,7 +8,9 @@ import android.view.View; import com.novelbook.android.R; import com.novelbook.android.adapter.BandanAdapterNew; +import com.novelbook.android.adapter.BookListAdapter; import com.novelbook.android.bean.NovelBlock; +import com.novelbook.android.db.Novel; import com.novelbook.android.netsubscribe.BookSubscribe; import com.novelbook.android.netutils.OnSuccessAndFaultListener; import com.novelbook.android.netutils.OnSuccessAndFaultSub; @@ -17,6 +19,7 @@ import com.novelbook.android.utils.Constants; import com.novelbook.android.utils.GsonUtil; import com.novelbook.android.utils.OnItemClickListener; +import java.util.ArrayList; import java.util.List; import butterknife.BindView; @@ -29,6 +32,7 @@ public class Fragment_bangdan extends BasicFragment { private static final String ARG_PARAM2 = "param2"; private BandanAdapterNew mAdapter; private List mBlocks; + private List mMoreBlocks; // private List mData; @BindView(R.id.rvBangdan) RecyclerView rvBandan; @@ -44,38 +48,11 @@ public class Fragment_bangdan extends BasicFragment { @Override protected void fillData() { - if(mBlocks==null){ - return; + if(mMoreBlocks!=null) { + + mAdapter.AddFooterItem(mMoreBlocks); + mAdapter.notifyDataSetChanged(); } - mAdapter = new BandanAdapterNew(activity ,mBlocks,R.layout.recycle_list_item_bangdannew,new OnItemClickListener() - { - - @Override - public void onItemClick(View view, int position) - { - // showBookDetail(mBlocks.get(blockId).getNs().get(novelIndex)); - // showPaihangbang(mBlocks.get(position)); - // Toast.makeText(getActivity(),"待。。。。。做",Toast.LENGTH_LONG).show(); - } - - @Override - public void onItemLongClick(View view, int position) - { - // initDialog(position); - // mAdapter.removeData(position); - } - @Override - public void onLinearOutClick(View view, int blockId,int novelIndex) { - // Toast.makeText(activity, "book "+ bookId + " clicked", Toast.LENGTH_SHORT).show(); - showPaihangbang(mBlocks.get(blockId)); - // showBookDetail(mBlocks.get(blockId).getNs().get(novelIndex)); - //showPaihangbang("分类名称" +position); - Log.d(TAG,String.format("clicked: position %s,lineId %s",novelIndex,blockId)); - - // openBook(); - } - }); - initialBookList(); } @@ -92,9 +69,47 @@ public class Fragment_bangdan extends BasicFragment { @Override public void initData() { + if(pageNo==1) { + + if(mBlocks!=null){ //下拉刷新 + mBlocks = new ArrayList(); + mAdapter.setData(mBlocks); + initialBookList(); + + }else{ + mBlocks = new ArrayList(); + mAdapter = new BandanAdapterNew(activity, mBlocks, R.layout.recycle_list_item_bangdannew, new OnItemClickListener() { + + @Override + public void onItemClick(View view, int position) { + // showBookDetail(mBlocks.get(blockId).getNs().get(novelIndex)); + // showPaihangbang(mBlocks.get(position)); + // Toast.makeText(getActivity(),"待。。。。。做",Toast.LENGTH_LONG).show(); + } + + @Override + public void onItemLongClick(View view, int position) { + // initDialog(position); + // mAdapter.removeData(position); + } + + @Override + public void onLinearOutClick(View view, int blockId, int novelIndex) { + // Toast.makeText(activity, "book "+ bookId + " clicked", Toast.LENGTH_SHORT).show(); + showPaihangbang(mBlocks.get(blockId)); + // showBookDetail(mBlocks.get(blockId).getNs().get(novelIndex)); + //showPaihangbang("分类名称" +position); + Log.d(TAG, String.format("clicked: position %s,lineId %s", novelIndex, blockId)); + + // openBook(); + } + }); + initialBookList(); + } + } showProgressDialog(true, "正在加载"); - + mMoreBlocks =null; BookSubscribe.getSiteRanks( Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { @Override @@ -102,7 +117,7 @@ public class Fragment_bangdan extends BasicFragment { // mFirstPage= gson.fromJson(result, FirstPage.class); try { - mBlocks = GsonUtil.parserNovleBlocks(result,"ranks"); + mMoreBlocks = GsonUtil.parserNovleBlocks(result,"ranks"); } catch (Exception e) { e.printStackTrace(); Log.d(TAG, "error on : " + e.getMessage()); @@ -128,6 +143,7 @@ public class Fragment_bangdan extends BasicFragment { } void initialBookList() { + mAdapter.setShowFootView(true); rvBandan.setLayoutManager(new LinearLayoutManager(activity)); rvBandan.setAdapter(mAdapter); diff --git a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bookStore.java b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bookStore.java index a3ff869..2cfb912 100644 --- a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bookStore.java +++ b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_bookStore.java @@ -89,7 +89,7 @@ public class Fragment_bookStore extends BasicFragment { mFragments.add(new Fragment_bangdan()); // mFragments.add(new Fragment_shudan()); Log.d(TAG,"initial fragments in tabs "); - } + } Log.d(TAG,"set viewPager adapter "); // FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(activity.getSupportFragmentManager()) { 第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失 https://blog.csdn.net/allan_bst/article/details/64920076 FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getChildFragmentManager()) { @@ -108,6 +108,7 @@ public class Fragment_bookStore extends BasicFragment { return mTitle[position]; } }; + mViewpager.setOffscreenPageLimit(3);//预加载设置 mViewpager.setAdapter(mAdapter); tabLayout.setViewPager(mViewpager); // tabLayout.setViewPager(mViewpager, mTitle, activity, mFragments); diff --git a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_booklist.java b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_booklist.java index 9dd95b2..5d6472b 100644 --- a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_booklist.java +++ b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_booklist.java @@ -1,5 +1,6 @@ package com.novelbook.android.Fragments; +import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; @@ -19,6 +20,7 @@ import com.novelbook.android.Activity_Search; import com.novelbook.android.Main2Activity; import com.novelbook.android.R; import com.novelbook.android.activity_cates; +import com.novelbook.android.adapter.BandanAdapterNew; import com.novelbook.android.bean.NovelBlock; import com.novelbook.android.db.Novel; import com.novelbook.android.netsubscribe.BookSubscribe; @@ -55,12 +57,20 @@ public class Fragment_booklist extends BasicFragment { private String fn; private String bangdan; - private int pageNo=1; + //private int pageNo=1; private int totalCount; - private int pageCount; + // private int pageCount; @BindView(R.id.rvBooklist) RecyclerView mRecyclerView; + @SuppressLint("ValidFragment") + public Fragment_booklist(String cate, int progress) { + this.cate =cate; + this.progress = progress; + + + } + public Fragment_booklist() { // Required empty public constructor } @@ -108,39 +118,22 @@ public class Fragment_booklist extends BasicFragment { @Override protected void fillData() { - if(mData==null) { - mData = new ArrayList(); - mAdapter = new BookListAdapter(activity, mData, R.layout.recycle_list_item_horizon, new OnItemClickListener() { - - @Override - public void onItemClick(View view, int position) { - showBookDetail(mData.get(position)); - // openBook(mData.get(position),mAdapter); - } - - @Override - public void onItemLongClick(View view, int position) { - // initDialog(position); - // mAdapter.removeData(position); - } - - @Override - public void onLinearOutClick(View view, int position, int llId) { - Toast.makeText(activity, "book " + position + " clicked", - Toast.LENGTH_SHORT).show(); - } - }); + if(mRecyclerView.getAdapter()==null) { mRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); mRecyclerView.setAdapter(mAdapter); - } + + + if(mMoreData!=null) { if(mMoreData.size()>0) { pageNo++; } - int status = pageCount > pageNo ? BookListAdapter.PULLUP_LOAD_MORE : BookListAdapter.NO_LOAD_MORE; + int status = pageCount >= pageNo ? BookListAdapter.PULLUP_LOAD_MORE : BookListAdapter.NO_LOAD_MORE; + // mAdapter.setPercent(pageNo/pageCount); mAdapter.AddFooterItem(mMoreData); mAdapter.changeMoreStatus(status); + } } @@ -154,6 +147,43 @@ public class Fragment_booklist extends BasicFragment { @Override public void initData() { + int pn = pageNo; + + if(pageNo==1) { + + if (mData != null) { //下拉刷新 + mData = new ArrayList(); + mAdapter.setData(mData); + + } else { + + mData = new ArrayList(); + mAdapter = new BookListAdapter(activity, mData, R.layout.recycle_list_item_horizon, new OnItemClickListener() { + + @Override + public void onItemClick(View view, int position) { + showBookDetail(mData.get(position)); + // openBook(mData.get(position),mAdapter); + } + + @Override + public void onItemLongClick(View view, int position) { + // initDialog(position); + // mAdapter.removeData(position); + } + + @Override + public void onLinearOutClick(View view, int position, int llId) { + Toast.makeText(activity, "book " + position + " clicked", + Toast.LENGTH_SHORT).show(); + } + }); + mAdapter.setShowFootView(true); + mRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); + mRecyclerView.setAdapter(mAdapter); + + } + } /* if(mAdapter!=null){ mAdapter.changeMoreStatus(BookListAdapter.LOADING_MORE); }*/ @@ -189,7 +219,7 @@ public class Fragment_booklist extends BasicFragment { Log.d(TAG,String.format("fn is %s",fn) ); if(!TextUtils.isEmpty(bangdan) && !TextUtils.isEmpty(fn)){ //榜单 - showProgressDialog(true, "正在加载榜单"); + // showProgressDialog(true, "正在加载榜单"); BookSubscribe.getSiteRankDetail(fn,pageNo,Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { @Override public void onSuccess(String result) { @@ -217,16 +247,16 @@ public class Fragment_booklist extends BasicFragment { }else if(!TextUtils.isEmpty(fn)){ //首页 更多 - showProgressDialog(true, "正在加载更多"); + // showProgressDialog(true, "正在加载更多"); BookSubscribe.getNovelPaihang(fn,Constants.SEX,new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); } else if(!TextUtils.isEmpty((cate))) { //分类 - showProgressDialog(true, "正在加载分类"); + // showProgressDialog(true, "正在加载分类"); BookSubscribe.getCateNovelList(cate, pageNo, Constants.SEX, progress, new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); }else if(!TextUtils.isEmpty(keyWord)){ //搜索 - showProgressDialog(true, "正在加载搜索"); + // showProgressDialog(true, "正在加载搜索"); BookSubscribe.getSearchNovelList( keyWord,pageNo, Constants.SEX, new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); } @@ -258,11 +288,15 @@ public class Fragment_booklist extends BasicFragment { //判断RecyclerView的状态 是空闲时,同时,是最后一个可见的ITEM时才加载 if(newState==RecyclerView.SCROLL_STATE_IDLE&&lastVisibleItem+1==mAdapter.getItemCount()){ - //设置正在加载更多 - mAdapter.changeMoreStatus(mAdapter.LOADING_MORE); + if(pageNo <= pageCount) { + //设置正在加载更多 + mAdapter.changeMoreStatus(mAdapter.LOADING_MORE); - //改为网络请求 - initData(); + //改为网络请求 + initData(); + }else{ + mAdapter.changeMoreStatus(mAdapter.NO_LOAD_MORE); + } } @@ -279,6 +313,11 @@ public class Fragment_booklist extends BasicFragment { }); } + @Override + public void onResume(){ + super.onResume(); + pageNo=1; + } } diff --git a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_jingxuan.java b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_jingxuan.java index 1b0b904..c39a5a1 100644 --- a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_jingxuan.java +++ b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_jingxuan.java @@ -1,6 +1,7 @@ package com.novelbook.android.Fragments; import android.content.Context; +import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -74,14 +75,16 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener MyViewPager mViewpagerTuijian; //@BindView(R.id.titleIndictator) // TitlePageIndicator titleIndicator; - + @BindView(R.id.imageBlock0) + ImageView imageViewBlock0; @BindView(R.id.imageBlock1) ImageView imageViewBlock1; @BindView(R.id.imageBlock2) ImageView imageViewBlock2; @BindView(R.id.imageBlock3) ImageView imageViewBlock3; - + @BindView(R.id.tvBlock0) + TextView tvBlock0; @BindView(R.id.tvBlock1) TextView tvBlock1; @BindView(R.id.tvBlock2) @@ -118,7 +121,7 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener private int INDEX_BANNER =1; private int INDEX_TUIJIAN =2; private int blockIndex =3; //从第3个block 开始处理 - + private int gridItemSpace = 0; public Fragment_jingxuan() { // Required empty public constructor @@ -273,7 +276,7 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener @Override public void initViews() { - + gridItemSpace = getResources().getDimensionPixelSize(R.dimen._10dp); } @@ -393,6 +396,8 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener // mTitle = new String[]{"精选", "榜单", "书单"}; mFragments = new ArrayList<>(); NovelBlock block = mBlocks.get(1); + loadImageView(mBlocks.get(1).getIcon(),imageViewBlock0); + tvBlock0.setText( mBlocks.get(1).getName()); List nvs = new ArrayList(); for(Novel novel : block.getNs() ){ @@ -488,7 +493,10 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener } if(mHotNewData_g!=null) { rvHotNewG.setLayoutManager(new GridLayoutManager(activity, spanCnt)); - + if( rvHotNewG.getItemDecorationCount()>0){ + rvHotNewG.removeItemDecorationAt(0); + } + rvHotNewG.addItemDecoration(new SpaceItemDecoration( gridItemSpace)); rvHotNewG.setAdapter(new BookListAdapter(activity, mHotNewData_g, R.layout.recycle_list_item, new OnItemClickListener() { @Override @@ -538,7 +546,10 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener } if(mHotLianZaiData_g!=null) { rvLianZaiG.setLayoutManager(new GridLayoutManager(activity, spanCnt)); - + if( rvLianZaiG.getItemDecorationCount()>0){ + rvLianZaiG.removeItemDecorationAt(0); + } + rvLianZaiG.addItemDecoration(new SpaceItemDecoration( gridItemSpace)); rvLianZaiG.setAdapter(new BookListAdapter(activity, mHotLianZaiData_g, R.layout.recycle_list_item, new OnItemClickListener() { @Override @@ -589,7 +600,10 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener } if(mFinishedData_g!=null) { rvFinishG.setLayoutManager(new GridLayoutManager(activity, spanCnt)); - + if( rvFinishG.getItemDecorationCount()>0){ + rvFinishG.removeItemDecorationAt(0); + } + rvFinishG.addItemDecoration(new SpaceItemDecoration( gridItemSpace)); rvFinishG.setAdapter(new BookListAdapter(activity, mFinishedData_g, R.layout.recycle_list_item, new OnItemClickListener() { @Override @@ -614,6 +628,40 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener })); } } + public class SpaceItemDecoration extends RecyclerView.ItemDecoration { + private int space; + + public SpaceItemDecoration(int space) { + this.space = space*3; + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + //不是第一个的格子都设一个左边和底部的间距 + //outRect.left = space; + // outRect.bottom = space; + + //由于每行都只有3个,所以第一个都是3的倍数,把左边距设为0 + if (parent.getChildLayoutPosition(view) %getSpanCnt()==0) { + Log.d(TAG, "getItemOffsets: left " +parent.getChildLayoutPosition(view)); + //outRect.set(0,0,0,0); + outRect.right=space; + outRect.left=0; + }else if(parent.getChildLayoutPosition(view) %getSpanCnt()==2){ + Log.d(TAG, "getItemOffsets: right " +parent.getChildLayoutPosition(view)); + // outRect.set(0,0,0,0); + outRect.right=0; + outRect.left=space; + }else { + // outRect.set(space, 0, space, 0); + // outRect.right=space; + // outRect.left=space; + Log.d(TAG, "getItemOffsets: center " +parent.getChildLayoutPosition(view)); + } + // outRect.set(0,0,0,0); + } + + } } \ No newline at end of file diff --git a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_paihang.java b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_paihang.java index 5ca0cc2..2b4d4c6 100644 --- a/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_paihang.java +++ b/zhuike/src/main/java/com/novelbook/android/Fragments/Fragment_paihang.java @@ -91,7 +91,7 @@ public class Fragment_paihang extends BasicFragment { mData3 = new ArrayList<>(); mData1.add(new TabEntry("男A",0,0) ); mData1.add(new TabEntry("女A",0,0)); - for (int i = 'A'; i < 'I'; i++) + for (int i = 'A'; i < 'F'; i++) { mData2.add(new TabEntry("类" + (char) i,0,0) ); if(i<'D') @@ -171,6 +171,7 @@ public class Fragment_paihang extends BasicFragment { }); tabLayout2.setTabData(mData2); + tabLayout2.setOnTabSelectListener(new OnTabSelectListener() { @Override public void onTabSelect(int position) { diff --git a/zhuike/src/main/java/com/novelbook/android/adapter/BandanAdapterNew.java b/zhuike/src/main/java/com/novelbook/android/adapter/BandanAdapterNew.java index d2ac9f6..4c70990 100644 --- a/zhuike/src/main/java/com/novelbook/android/adapter/BandanAdapterNew.java +++ b/zhuike/src/main/java/com/novelbook/android/adapter/BandanAdapterNew.java @@ -22,7 +22,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; -public class BandanAdapterNew extends RecyclerView.Adapter { +public class BandanAdapterNew extends RecyclerView.Adapter { private final int EMPTY_VIEW = 1; private final int PROGRESS_VIEW = 2; private final int IMAGE_VIEW = 3; @@ -31,6 +31,11 @@ public class BandanAdapterNew extends RecyclerView.Adapter mDatas = new ArrayList(); private OnItemClickListener mOnItemClickLitener; private int listItemID; + private boolean showFootView =false; + + public void setShowFootView(boolean showFootView) { + this.showFootView = showFootView; + } public BandanAdapterNew(Context context, List mDatas, int listItemID, OnItemClickListener clickLitener) { this.context = context; this.mDatas = mDatas; @@ -55,12 +60,16 @@ public class BandanAdapterNew extends RecyclerView.Adapter items) { + // mDatas.add(position, "Insert One"); + mDatas = items; + notifyDataSetChanged(); + } public void removeData(int position) { mDatas.remove(position); notifyItemRemoved(position); } + + public void AddFooterItem(List items) { + mDatas.addAll(items); + notifyDataSetChanged(); + } + class EmptyViewHolder extends RecyclerView.ViewHolder { + @BindView(R.id.tvLoadText) + TextView tvEmpty; + public EmptyViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this,itemView); + } + } + class MyViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.ll1) diff --git a/zhuike/src/main/java/com/novelbook/android/adapter/BookListAdapter.java b/zhuike/src/main/java/com/novelbook/android/adapter/BookListAdapter.java index d346c0e..6b56f49 100644 --- a/zhuike/src/main/java/com/novelbook/android/adapter/BookListAdapter.java +++ b/zhuike/src/main/java/com/novelbook/android/adapter/BookListAdapter.java @@ -32,6 +32,7 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol private final int IMAGE_VIEW = 3; private static final int TYPE_ITEM = 4; private static final int TYPE_FOOTER = 5; + private static final int NO_FOOTER = 6; // private MyImageLoader loader = new MyImageLoader(); private Context context; private List mDatas ; @@ -48,8 +49,19 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol public static final int NO_LOAD_MORE = 2; //上拉加载更多状态-默认为0 - private int mLoadMoreStatus = 0; + private int mLoadMoreStatus = 2; + private boolean showFootView =false; + private float percent =0; + + public void setPercent(float percent) { + this.percent = percent; + } + + + public void setShowFootView(boolean showFootView) { + this.showFootView = showFootView; + } public BookListAdapter(Context context, List datas) { context = context; @@ -83,10 +95,14 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol public int getItemViewType(int position) { if (mDatas.size() == 0) { return EMPTY_VIEW; - } else if (mDatas.get(position) == null) { - return PROGRESS_VIEW; - } else if ( position + 1 == getItemCount()) { + }else if ( position < mDatas.size()) { //最后一个item设置为footerView + return TYPE_ITEM; + } else if ( position == mDatas.size()) { + //最后一个item设置为footerView + if(!showFootView){ + return NO_FOOTER; + } return TYPE_FOOTER; } else { return TYPE_ITEM; @@ -110,6 +126,8 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol }else if(viewType == EMPTY_VIEW){ EmptyViewHolder holder = new EmptyViewHolder (LayoutInflater.from(context).inflate(R.layout.recycle_list_empty_item, parent, false)); return holder; + }else if(viewType == NO_FOOTER){ + return new NoShowViewHolder (LayoutInflater.from(context).inflate(R.layout.recycle_list_noshow_item, parent, false)); } View itemView = mInflater.inflate(listItemID, parent, false); @@ -144,18 +162,31 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol switch (mLoadMoreStatus) { case PULLUP_LOAD_MORE: - footerViewHolder.mTvLoadText.setText("上拉加载更多..."); + footerViewHolder.mTvLoadText.setText(String.format("上拉加载更多..")); break; case LOADING_MORE: footerViewHolder.mTvLoadText.setText("正加载更多..."); break; case NO_LOAD_MORE: + if(!showFootView){ + footerViewHolder.mLoadLayout.setVisibility(View.GONE); + footerViewHolder.itemView.setVisibility(View.GONE); + return; + } //隐藏加载更多 - footerViewHolder.mLoadLayout.setVisibility(View.GONE); + footerViewHolder.mTvLoadText.setText("到底了"); + break; } - }else if (hd instanceof MyViewHolder) { + }else if (hd instanceof EmptyViewHolder) { + EmptyViewHolder holder = (EmptyViewHolder)hd; + holder.tvEmpty.setVisibility(View.VISIBLE); + holder.tvEmpty.setText(R.string.noRecord); + } + + + else if (hd instanceof MyViewHolder) { MyViewHolder holder = (MyViewHolder)hd; holder.tvTitle.setText(mDatas.get(position).getName()); @@ -190,7 +221,7 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol @Override public int getItemCount() { - return mDatas.size(); + return mDatas.size()+1; } public void addData(int position) { @@ -215,18 +246,30 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol ButterKnife.bind(this,itemView); } } - public class EmptyViewHolder extends RecyclerView.ViewHolder { - + class EmptyViewHolder extends RecyclerView.ViewHolder { + @BindView(R.id.tvLoadText) + TextView tvEmpty; public EmptyViewHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } + class NoShowViewHolder extends RecyclerView.ViewHolder { + + public NoShowViewHolder(View itemView) { + super(itemView); + + } + } public void AddHeaderItem(List items) { mDatas.addAll(0, items); notifyDataSetChanged(); } - + public void setData(List items) { + // mDatas.add(position, "Insert One"); + mDatas = items; + notifyDataSetChanged(); + } public void AddFooterItem(List items) { mDatas.addAll(items); notifyDataSetChanged(); @@ -239,4 +282,7 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol mLoadMoreStatus=status; notifyDataSetChanged(); } + + + } diff --git a/zhuike/src/main/java/com/novelbook/android/netutils/HttpMethods.java b/zhuike/src/main/java/com/novelbook/android/netutils/HttpMethods.java index 3ca472e..ef5b2bd 100644 --- a/zhuike/src/main/java/com/novelbook/android/netutils/HttpMethods.java +++ b/zhuike/src/main/java/com/novelbook/android/netutils/HttpMethods.java @@ -267,7 +267,7 @@ public class HttpMethods { public Response intercept(Chain chain) throws IOException { Request request = chain.request(); if (!NetUtil.isNetworkConnected()) { - int maxStale = 60 * 60 * 24 * 28; + int maxStale = 0;// 60 * 60 * 24 * 28; request = request.newBuilder() .removeHeader("Pragma") .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale) diff --git a/zhuike/src/main/java/com/novelbook/android/netutils/OnSuccessAndFaultSub.java b/zhuike/src/main/java/com/novelbook/android/netutils/OnSuccessAndFaultSub.java index 0ade451..73cda18 100644 --- a/zhuike/src/main/java/com/novelbook/android/netutils/OnSuccessAndFaultSub.java +++ b/zhuike/src/main/java/com/novelbook/android/netutils/OnSuccessAndFaultSub.java @@ -73,6 +73,7 @@ public class OnSuccessAndFaultSub extends DisposableObserver private void showProgressDialog() { if (showProgress && null != progressDialog) { + progressDialog.setMessage("正在请求网络"); progressDialog.show(); } } diff --git a/zhuike/src/main/res/layout/app_bar_main2.xml b/zhuike/src/main/res/layout/app_bar_main2.xml index 1091c34..494f14a 100644 --- a/zhuike/src/main/res/layout/app_bar_main2.xml +++ b/zhuike/src/main/res/layout/app_bar_main2.xml @@ -18,11 +18,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ToolBarTheme.AppBarOverlay"> - + - + > + - - \ No newline at end of file + \ No newline at end of file diff --git a/zhuike/src/main/res/layout/fragment_fragment__shelf.xml b/zhuike/src/main/res/layout/fragment_fragment__shelf.xml index 1323c59..bab8960 100644 --- a/zhuike/src/main/res/layout/fragment_fragment__shelf.xml +++ b/zhuike/src/main/res/layout/fragment_fragment__shelf.xml @@ -20,8 +20,10 @@ android:layout_weight="1" android:divider="#ffff0000" android:dividerHeight="10dp" - android:paddingTop="20dp" - android:paddingBottom="40dp" /> + android:paddingTop="1dp" + android:paddingBottom="40dp" + + /> diff --git a/zhuike/src/main/res/layout/fragment_fragment_booklist.xml b/zhuike/src/main/res/layout/fragment_fragment_booklist.xml index d410aaa..db4817d 100644 --- a/zhuike/src/main/res/layout/fragment_fragment_booklist.xml +++ b/zhuike/src/main/res/layout/fragment_fragment_booklist.xml @@ -14,7 +14,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:nestedScrollingEnabled="false" - android:paddingTop="10dp" + android:paddingTop="5dp" /> diff --git a/zhuike/src/main/res/layout/fragment_jingxuan.xml b/zhuike/src/main/res/layout/fragment_jingxuan.xml index 4c5d3d2..00e5ba0 100644 --- a/zhuike/src/main/res/layout/fragment_jingxuan.xml +++ b/zhuike/src/main/res/layout/fragment_jingxuan.xml @@ -45,12 +45,14 @@ style="@style/NovelBlockHead" > + />