pda/zhuike/.svn/pristine/ed/ede8d3db27fffef76837ccc5b83...

693 lines
24 KiB
Plaintext
Raw Normal View History

2024-02-06 22:23:29 +08:00
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;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.novelbook.android.BookActivity;
import com.novelbook.android.R;
import com.novelbook.android.bean.FirstPage;
import com.novelbook.android.bean.NovelBlock;
import com.novelbook.android.db.Novel;
import com.novelbook.android.db.SiteRule;
import com.novelbook.android.netsubscribe.BookSubscribe;
import com.novelbook.android.netutils.OnSuccessAndFaultListener;
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
import com.novelbook.android.utils.Constants;
import com.novelbook.android.utils.CyclePageIndicator;
import com.novelbook.android.utils.GsonUtil;
import com.novelbook.android.utils.ImageUtil;
import com.novelbook.android.utils.MyViewPager;
import com.novelbook.android.utils.OnItemClickListener;
import com.novelbook.android.adapter.BookListAdapter;
import com.umeng.analytics.MobclickAgent;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader;
import org.json.JSONObject;
import org.litepal.LitePal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
public class Fragment_jingxuan extends BasicFragment implements OnBannerListener {
public static final String TAG=Fragment_jingxuan.class.getSimpleName();
private String mParam1;
private String mParam2;
//@BindView(R.id.llTuijian)
// LinearLayout llTuijian;
@BindView(R.id.banner)
Banner banner;
@BindView(R.id.dot_horizontal)
LinearLayout cyclell;
@BindView(R.id.viewpager_tuijian)
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)
TextView tvBlock2;
@BindView(R.id.tvBlock3)
TextView tvBlock3;
@BindView(R.id.buttonMore1)
Button btnMore1;
@BindView(R.id.buttonMore2)
Button btnMore2;
@BindView(R.id.buttonMore3)
Button btnMore3;
@BindView(R.id.buttonMore4)
Button btnMore4;
@BindView(R.id.llBlock1)
LinearLayout ll1;
@BindView(R.id.llBlock2)
LinearLayout ll2;
@BindView(R.id.llBlock3)
LinearLayout ll3;
@BindView(R.id.llBlock4)
LinearLayout ll4;
private List<Fragment> mFragments;
private ArrayList<View> mList;
// String[] mTitle;
private List<NovelBlock> mBlocks;
private List<String> list_path;
private List<String> list_title;
private FirstPage mFirstPage;
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
}
public static Fragment_jingxuan newInstance(String param1, String param2) {
Fragment_jingxuan fragment = new Fragment_jingxuan();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
protected int getLayoutRes() {
return R.layout.fragment_jingxuan;
}
@Override
public void initData() {
showProgressDialog(true, "正在加载");
BookSubscribe.getFirstPage(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try));
error_try=0;
// mFirstPage= gson.fromJson(result, FirstPage.class);
try {
mBlocks = GsonUtil.parserNovleBlocks(result,"blocks");
} catch (Exception e) {
e.printStackTrace();
}
handler.sendEmptyMessage(1);
}
@Override
public void onFault(String errorMsg) {
//失败
// Log.d(TAG, String.format("init data HttpMethods error on init, trycnt %s " ,error_try ));
retryErorr(1);
}
}, getActivity()));
}
protected void processArguments(){
if (getArguments() != null) {
Bundle bundle = getArguments() ;
}
}
@Override
protected void fillData() {
/*
mHotNewData_l = initData(mHotNewData_l, 'B');
mHotNewData_g = initData(mHotNewData_g, 'D');
mHotLianZaiData_l = initData(mHotLianZaiData_l, 'C');
mHotLianZaiData_g = initData(mHotLianZaiData_g, 'D');
mFinishedData_l = initData(mFinishedData_l, 'A');
mFinishedData_g = initData(mFinishedData_g, 'G');
*/
ll1.setVisibility(View.GONE);
ll2.setVisibility(View.GONE);
ll3.setVisibility(View.GONE);
ll4.setVisibility(View.GONE);
blockIndex=3;
if(mBlocks ==null || mBlocks.size() ==0){
return;
}
blockIndex--;
if(mBlocks.size()>blockIndex) {
ll1.setVisibility(View.VISIBLE);
mHotNewData_l = mBlocks.get(blockIndex).getNs().subList(0,mBlocks.get(blockIndex).getOneself());
mHotNewData_g = mBlocks.get(blockIndex).getNs().subList(mBlocks.get(blockIndex).getOneself(),mBlocks.get(blockIndex).getNs().size());
tvBlock1.setText(mBlocks.get(blockIndex).getName());
loadImageView(mBlocks.get(blockIndex).getIcon(),imageViewBlock1);
if(TextUtils.isEmpty(mBlocks.get(blockIndex).getTitle())){
btnMore1.setVisibility(View.GONE);
}else {
btnMore1.setTag(mBlocks.get(blockIndex));
}
blockIndex++;
}
// mHotNewData_g = initData(mHotNewData_g, 'D');
if(mBlocks.size()>blockIndex) {
ll2.setVisibility(View.VISIBLE);
mHotLianZaiData_l = mBlocks.get(blockIndex).getNs().subList(0,mBlocks.get(blockIndex).getOneself());
mHotLianZaiData_g = mBlocks.get(blockIndex).getNs().subList(mBlocks.get(blockIndex).getOneself(),mBlocks.get(blockIndex).getNs().size());
tvBlock2.setText(mBlocks.get(blockIndex).getName());
loadImageView(mBlocks.get(blockIndex).getIcon(),imageViewBlock2);
if(TextUtils.isEmpty(mBlocks.get(blockIndex).getTitle())){
btnMore2.setVisibility(View.GONE);
}else {
btnMore2.setTag(mBlocks.get(blockIndex));
}
blockIndex++;
}
// mHotLianZaiData_g = initData(mHotLianZaiData_g, 'D');
// mFinishedData_l = mBlocks.get(2).getNs(); //initData(mFinishedData_l, 'A');
if(mBlocks.size()> blockIndex ) {
ll3.setVisibility(View.VISIBLE);
mFinishedData_l= mBlocks.get(blockIndex).getNs().subList(0,mBlocks.get(blockIndex).getOneself());
mFinishedData_g = mBlocks.get(blockIndex).getNs().subList(mBlocks.get(blockIndex).getOneself(),mBlocks.get(blockIndex).getNs().size());
tvBlock3.setText(mBlocks.get(blockIndex).getName());
loadImageView(mBlocks.get(blockIndex).getIcon(),imageViewBlock3);
if(TextUtils.isEmpty(mBlocks.get(blockIndex).getTitle())){
btnMore3.setVisibility(View.GONE);
}else {
btnMore3.setTag(mBlocks.get(blockIndex));
}
}
if(mBlocks.size()> blockIndex ) {
ll4.setVisibility(View.VISIBLE);
mFinishedData_l= mBlocks.get(blockIndex).getNs().subList(0,mBlocks.get(blockIndex).getOneself());
mFinishedData_g = mBlocks.get(blockIndex).getNs().subList(mBlocks.get(blockIndex).getOneself(),mBlocks.get(blockIndex).getNs().size());
tvBlock3.setText(mBlocks.get(blockIndex).getName());
loadImageView(mBlocks.get(blockIndex).getIcon(),imageViewBlock3);
if(TextUtils.isEmpty(mBlocks.get(blockIndex).getTitle())){
btnMore4.setVisibility(View.GONE);
}else {
btnMore4.setTag(mBlocks.get(blockIndex));
}
}
testBanner(banner, this);
initialBookList();
initTuijianPagers();
}
@Override
public void initViews() {
gridItemSpace = getResources().getDimensionPixelSize(R.dimen._10dp)/2;
}
@OnClick({R.id.buttonMore1, R.id.buttonMore2, R.id.buttonMoreTuijian, R.id.buttonMore3
/* , R.id.buttonCatePingfen, R.id.buttonCateRegeng, R.id.buttonCateTuijian, R.id.buttonCateShoucang, R.id.buttonCateWanjie*/
})
void bubmitButton(View view) {
switch (view.getId()) {
case R.id.buttonMore1:
showPaihangbang(btnMore1.getTag());
break;
case R.id.buttonMoreTuijian:
showPaihangbang("推荐");
break;
case R.id.buttonMore2:
showPaihangbang(btnMore2.getTag());
break;
case R.id.buttonMore3:
showPaihangbang(btnMore3.getTag());
break;
case R.id.buttonMore4:
showPaihangbang(btnMore4.getTag());
break;
/* case R.id.buttonCatePingfen:
showPaihangbang("评分");
break;
case R.id.buttonCateRegeng:
showPaihangbang("最热");
break;
case R.id.buttonCateWanjie:
showPaihangbang("完结");
break;
case R.id.buttonCateShoucang:
showPaihangbang("收藏");
break;
case R.id.buttonCateTuijian:
showPaihangbang("推荐");
break;*/
}
}
void testBanner(Banner banner, OnBannerListener listioner) {
//放图片地址的集合
list_path = mBlocks.get(0).getPictures();//new ArrayList<String>();// mBlocks.get(0).getPictures() ;
//放标题的集合
list_title = new ArrayList<>();
for (Novel nv : mBlocks.get(0).getNs()) {
list_title.add(nv.getName());
}
/*
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg");
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg");
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg");
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg");
list_title.add("好好学习");
list_title.add("天天向上");
list_title.add("热爱劳动");
list_title.add("不搞对象");
*/
//设置内置样式,共有六种可以点入方法内逐一体验使用。
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
//设置图片加载器,图片加载器在下方
banner.setImageLoader(ImageUtil.loader);
//设置图片网址或地址的集合
banner.setImages(list_path);
//设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验
banner.setBannerAnimation(Transformer.Default);
//设置轮播图的标题集合
banner.setBannerTitles(list_title);
//设置轮播间隔时间
banner.setDelayTime(3000);
//设置是否为自动轮播,默认是“是”。
banner.isAutoPlay(true);
//设置指示器的位置,小点点,左中右。
banner.setIndicatorGravity(BannerConfig.CENTER)
//以上内容都可写成链式布局,这是轮播图的监听。比较重要。方法在下面。
.setOnBannerListener(listioner)
//必须最后调用的方法,启动轮播图。
.start();
}
//轮播图的监听方法
@Override
public void OnBannerClick(int position) {
Novel nv = mBlocks.get(0).getNs().get(position);
showBookDetail(nv);
// showShudanDetail(position);
}
//cycle viewpagers
//---------重磅推荐-------------
void initTuijianPagers() {
// mViewpagerTuijian =( MyViewPager) rootView.findViewById(R.id.viewpager_tuijian);
// if (mFragments == null || mFragments.size() == 0) {
// mTitle = new String[]{"精选", "榜单", "书单"};
if(mBlocks==null ||mBlocks.size()<2){
return;
}
if(mFragments==null) {
mFragments = new ArrayList<>();
}else{
mFragments.clear();
}
NovelBlock block = mBlocks.get(1);
if(block==null ){
return;
}
loadImageView(mBlocks.get(1).getIcon(),imageViewBlock0);
tvBlock0.setText( mBlocks.get(1).getName());
List<Novel> nvs = new ArrayList<Novel>();
for(Novel novel : block.getNs() ){
if(nvs.size()<3){
nvs.add(novel);
}else {
mFragments.add(Fragment_jingxuan_tuijian.newInstance(nvs));
nvs = new ArrayList<Novel>();
nvs.add(novel);
}
}
if(nvs.size()>0){
mFragments.add(Fragment_jingxuan_tuijian.newInstance(nvs));
}
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
FragmentStatePagerAdapter mAdapter = new FragmentStatePagerAdapter(getChildFragmentManager()) {
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
//ViewPager与TabLayout绑定后这里获取到PageTitle就是Tab的Text
// @Override
// public CharSequence getPageTitle(int position) {
// return mTitle[position];
// }
};
cyclell.removeAllViews();
mViewpagerTuijian.removeAllViews();
mViewpagerTuijian.setAdapter(mAdapter);
mViewpagerTuijian.clearOnPageChangeListeners();
// mViewpagerTuijian.setOnPageChangeListener(new CyclePageIndicator(getContext(), cyclell, mFragments.size()));
mViewpagerTuijian.addOnPageChangeListener(new CyclePageIndicator(getContext(), cyclell, mFragments.size()));
}
//---------------------------------------------------book cate list-------------------------------begin
// private BookListAdapter mAdapter;
private List<Novel> mHotNewData_l, mHotNewData_g, mHotLianZaiData_l, mHotLianZaiData_g, mFinishedData_l, mFinishedData_g;
@BindView(R.id.rvHotNewL)
RecyclerView rvHotNewL;
@BindView(R.id.rvHotNewG)
RecyclerView rvHotNewG;
@BindView(R.id.rvLianZaiG)
RecyclerView rvLianZaiG;
@BindView(R.id.rvLianZaiL)
RecyclerView rvLianZaiL;
@BindView(R.id.rvFinishL)
RecyclerView rvFinishL;
@BindView(R.id.rvFinishG)
RecyclerView rvFinishG;
int getSpanCnt(){
return Constants.NOVEL_SPAN_CNT;
}
void initialBookList() {
int gridItemsLayout =R.layout.recycle_list_item_large;
int spanCnt =getSpanCnt();
OnItemClickListener onItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
showBookDetail(mHotNewData_l.get(position));
// openBook(mHotNewData_l.get(position),null);
}
@Override
public void onItemLongClick(View view, int position) {
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int position, int llId) {
}
};
if(mHotNewData_l!=null) {
rvHotNewL.setLayoutManager(new LinearLayoutManager(activity));
rvHotNewL.setAdapter(new BookListAdapter(activity, mHotNewData_l, R.layout.recycle_list_item_horizon, onItemClickListener));
}
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,gridItemsLayout, new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
showBookDetail(mHotNewData_g.get(position));
// openBook( mHotNewData_g.get(position) ,null);
}
@Override
public void onItemLongClick(View view, int position) {
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int position, int llId) {
}
}));
}
if(rvLianZaiL!=null) {
rvLianZaiL.setLayoutManager(new LinearLayoutManager(this.activity));
rvLianZaiL.setAdapter(new BookListAdapter(activity, mHotLianZaiData_l, R.layout.recycle_list_item_horizon, new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// Toast.makeText(activity, position + "grid click", Toast.LENGTH_SHORT).show();
showBookDetail(mHotLianZaiData_l.get(position));
// openBook( mHotLianZaiData_l.get(position) ,null);
}
@Override
public void onItemLongClick(View view, int position) {
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int position, int llId) {
}
}));
}
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, gridItemsLayout, new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// Toast.makeText(activity, position + "grid click", Toast.LENGTH_SHORT).show();
showBookDetail(mHotLianZaiData_g.get(position));
// openBook( mHotLianZaiData_g.get(position) ,null);
}
@Override
public void onItemLongClick(View view, int position) {
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int position, int llId) {
}
}));
}
if(mFinishedData_l!=null) {
rvFinishL.setLayoutManager(new LinearLayoutManager(this.activity));
rvFinishL.setAdapter(new BookListAdapter(activity, mFinishedData_l, R.layout.recycle_list_item_horizon, new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// Toast.makeText(activity, position + "grid click", Toast.LENGTH_SHORT).show();
showBookDetail(mFinishedData_l.get(position));
// openBook( mFinishedData_l.get(position) ,null);
}
@Override
public void onItemLongClick(View view, int position) {
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int position, int llId) {
}
}));
}
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, gridItemsLayout, new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// Toast.makeText(activity, position + "grid click", Toast.LENGTH_SHORT).show();
showBookDetail(mFinishedData_g.get(position));
// openBook( mFinishedData_g.get(position) ,null);
}
@Override
public void onItemLongClick(View view, int position) {
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int position, int llId) {
}
}));
}
}
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
private int space;
public SpaceItemDecoration(int space) {
this.space = space*2;
}
@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);
}
}
@Override
public void onResume() {
super.onResume();
initTuijianPagers();
MobclickAgent.onPageStart(TAG);
}
@Override
public void onPause(){
super.onPause();
MobclickAgent.onPageEnd(TAG);
}
}