pda/zhuike/.svn/pristine/65/65afecde7eed23c842c290d2ceb...

675 lines
24 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.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()-1);
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()-1);
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()-1);
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()-1);
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);
}
@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[]{"精选", "榜单", "书单"};
mFragments = new ArrayList<>();
NovelBlock block = mBlocks.get(1);
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);
}
}
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()) {
@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.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 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, R.layout.recycle_list_item, 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, R.layout.recycle_list_item, 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, R.layout.recycle_list_item, 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*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);
}
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(TAG);
}
@Override
public void onPause(){
super.onPause();
MobclickAgent.onPageEnd(TAG);
}
}