pda/zhuike/.svn/pristine/42/4218ad907255b31d0686ad3148d...

454 lines
14 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.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.design.widget.AppBarLayout;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import com.ixiaow.multilayout.MultiLayout;
import com.novelbook.android.R;
import com.novelbook.android.bean.ProgressType;
import com.novelbook.android.db.Novel;
import com.novelbook.android.netapi.RandomHost;
import com.novelbook.android.netsubscribe.BookSubscribe;
import com.novelbook.android.netutils.NetUtil;
import com.novelbook.android.netutils.OnSuccessAndFaultListener;
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
import com.novelbook.android.utils.CommonUtil;
import com.novelbook.android.utils.Constants;
import com.novelbook.android.utils.GsonUtil;
import com.novelbook.android.utils.OnItemClickListener;
import com.novelbook.android.adapter.BookListAdapter;
import com.flyco.tablayout.CommonTabLayout;
import com.flyco.tablayout.listener.CustomTabEntity;
import com.umeng.analytics.MobclickAgent;
import org.json.JSONArray;
import org.json.JSONObject;
import org.litepal.util.Const;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import butterknife.BindView;
import static com.novelbook.android.utils.Constants.lstNt;
import static com.novelbook.android.utils.Constants.lstProgress;
import static com.novelbook.android.utils.Constants.lstSex;
public class Fragment_paihang extends BasicFragment {
public static final String TAG = Fragment_paihang.class.getSimpleName();
private ArrayList<CustomTabEntity> mData1,mData2,mData3 ;
private int tab1Pos,tab2Pos,tab3Pos;
private BookListAdapter mAdapter;
// private BookListAdapter mAdapter;
private List<Novel> mData;;
private List<Novel> mMoreData;
@BindView(R.id.rvPaihang)
RecyclerView rvPaihang;
/* @BindView(R.id.tab_layout1)
CommonTabLayout tabLayout1;
@BindView(R.id.tab_layout2)
CommonTabLayout tabLayout2;
@BindView(R.id.tab_layout3)*/
CommonTabLayout tabLayout3;
@BindView(R.id.topic_layout)
MultiLayout topic_layout;
@BindView(R.id.topic_layout1)
MultiLayout topic_layout1;
@BindView(R.id.topic_layout2)
MultiLayout topic_layout2;
@BindView(R.id.app_bar)
AppBarLayout appBarLayout;
public Fragment_paihang() {
// Required empty public constructor
}
protected void processArguments(){
if (getArguments() != null) {
Bundle bundle = getArguments() ;
}
}
@Override
protected void fillData() {
if(rvPaihang.getAdapter()==null) {
rvPaihang.setLayoutManager(new LinearLayoutManager(activity));
rvPaihang.setAdapter(mAdapter);
}
if(mMoreData!=null) {
if(mMoreData.size()>0) {
pageNo++;
}
int status = getPageCount() >= pageNo ? BookListAdapter.LOADING_MORE : BookListAdapter.NO_LOAD_MORE;
// mAdapter.setPercent(pageNo/pageCount);
mAdapter.AddFooterItem(mMoreData);
mAdapter.changeMoreStatus(status);
}
mAdapter.notifyDataSetChanged();
if(mAdapter!=null) {
mAdapter.setNorecord(R.string.noRecord);
}
}
public static Fragment_paihang newInstance(String param1, String param2) {
Fragment_paihang fragment = new Fragment_paihang();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
}
}
@Override
protected int getLayoutRes() {
return R.layout.fragment_fragment_paihang;
}
@Override
public void initData() {
loadSearchData();
}
private void loadSearchData(){
if(mAdapter!=null) {
mAdapter.setNorecord(R.string.msgLoading);
}
/* try{
throw new Exception();
}catch (Exception e){
Log.e(TAG, "loadSearchData: ", e);
}*/
int pn = pageNo;
if(lstSex==null){
// getSearchTabTtitle();
// initTabs();
appBarLayout.setVisibility(View.GONE);
return;
}
appBarLayout.setVisibility(View.VISIBLE);
String sex = lstSex.get(tab1Pos);
String cate = lstNt.get(tab2Pos);
if(pageNo==1) {
noveIds = new ArrayList<Integer>();
if (mData != null) { //下拉刷新
mData = new ArrayList<Novel>();
mAdapter.setData(mData);
} else {
mData = new ArrayList<Novel>();
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) {
}
});
mAdapter.setShowTop(true);
mAdapter.setShowFootView(true);
rvPaihang.setLayoutManager(new LinearLayoutManager(activity));
rvPaihang.setAdapter(mAdapter);
}
}
mMoreData =null;
OnSuccessAndFaultListener successAndFaultListener = new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
error_try=0;
Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try));
// mFirstPage= gson.fromJson(result, FirstPage.class);
try {
JSONObject jsonObject = new JSONObject(result);
setPageCount(jsonObject.getInt("pageCount"));
List<Novel> list = GsonUtil. parserJsonArray(jsonObject,Constants.BLOCK_TITLE_NOVELS);
Log.d(TAG, "onSuccess: noveIds list size "+noveIds.size());
mMoreData =new ArrayList<Novel>();
for(Novel novel :list){
if(!noveIds.contains(novel.getNovelId())){
mMoreData.add(novel);
noveIds.add(novel.getNovelId());
}
}
Log.d(TAG, "onSuccess: mMoreData list size "+mMoreData.size());
if(mMoreData.size()>0){
loadListAd(mAdapter,1,mData.size()>0);
}
} 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 ));
// getSearchTabTtitle();
retryErorr(0);
}
};
showProgressDialog(false, "正在加载...");
BookSubscribe.getCateNovelList(cate, pageNo, tab1Pos+1, Constants.lstProgressType.get(tab3Pos).getId(), new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
}
@Override
public void initViews(){
appBarLayout.setVisibility(View.GONE);
if(lstNt==null) {
CommonUtil.getSearchTabTtitle(getActivity());
showProgressDialog(false,"正在加载...");
new Thread(){
@Override
public void run() {
Log.d(TAG, "prepare book to load options for search" );
while(lstNt==null){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
handler.sendEmptyMessage(MSG_INIT_TAB);
}
}.start();
}
else {
initTabs();
}
initLoadMoreListener();
}
@Override
void initTabs() {
tmp=0;
/*
while(lstNt==null){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}*/
List<String> lstType = new ArrayList<String>() ;//Arrays.asList(lstProgress);
for(ProgressType progressType : Constants.lstProgressType){
lstType.add(progressType.getName());
}
topic_layout.initTabNames(lstNt) ;
topic_layout1.initTabNames( lstSex) ;
topic_layout2.initTabNames(lstType) ;
// topic_layout.initTabNames(lstNt);
appBarLayout.setVisibility(View.VISIBLE);
topic_layout.setOnTabSelectListener(new MultiLayout.OnTabSelectListener() {
@Override
public void select(TextView textView, int i, int i1) {
Log.d(TAG, String.format("select: text %si %s i1 %s ",textView.getText(),i,i1));
tab2Pos = i1;
tabChanged();
}
});
topic_layout1.setOnTabSelectListener(new MultiLayout.OnTabSelectListener() {
@Override
public void select(TextView textView, int i, int i1) {
Log.d(TAG, String.format("select: text %si %s i1 %s ",textView.getText(),i,i1));
tab1Pos = i1;
tabChanged();
}
});
topic_layout2.setOnTabSelectListener(new MultiLayout.OnTabSelectListener() {
@Override
public void select(TextView textView, int i, int i1) {
Log.d(TAG, String.format("select: text %si %s i1 %s ",textView.getText(),i,i1));
tab3Pos = i1;
tabChanged();
}
});
// tabChanged();
}
int tmp=0;
void tabChanged() {
Log.d(TAG, String.format("tabChanged: to load data tmp %s" , tmp ));
tmp++;
/* Toast.makeText(activity, String.format( "TAB1 :{0}, TAB2 :{1}, TAB3 :{3}",
mData1.get(tab1Pos).getTabTitle(),
mData2.get(tab2Pos).getTabTitle(),
mData3.get(tab3Pos).getTabTitle()),
Toast.LENGTH_SHORT).show();
String selectedKey = mData1.get(tab1Pos).getTabTitle() +" " +
mData2.get(tab2Pos).getTabTitle() +" " +
mData3.get(tab3Pos).getTabTitle() ;
*/
if(lstSex==null || lstSex.size()==0) return;
pageNo=1;
String sex = lstSex.get(tab1Pos);
String cate = lstNt.get(tab2Pos);
String selectedKey = lstSex.get(tab1Pos) +" " +
cate +" " + Constants.lstProgressType.get(tab3Pos).getName();
// lstProgress[tab3Pos] ;
// Toast.makeText(activity, selectedKey, Toast.LENGTH_SHORT).show();
tvHint.setText(selectedKey);
Log.d(TAG, String.format("tabChanged: to load data %s,pageno %s, tmp %s" , selectedKey,pageNo ,tmp));
if( tmp<=lstProgress.length) return;
loadSearchData();
}
private void initLoadMoreListener() {
rvPaihang.addOnScrollListener(new RecyclerView.OnScrollListener() {
int lastVisibleItem ,visibleItemCount,totalItemCount,pastVisiblesItems;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//判断RecyclerView的状态 是空闲时同时是最后一个可见的ITEM时才加载
Log.d(TAG, String.format("onScrollStateChanged , state %s ,lastVisibleitem %s ,getItemCount %s,pageno %s ,pageCount %s",
newState==RecyclerView.SCROLL_STATE_IDLE,lastVisibleItem,mAdapter.getItemCount(),pageNo,getPageCount()));
if(newState==RecyclerView.SCROLL_STATE_IDLE&&lastVisibleItem+1==mAdapter.getItemCount()){
if(pageNo <= getPageCount()) {
//设置正在加载更多
mAdapter.changeMoreStatus(mAdapter.LOADING_MORE);
//改为网络请求
loadSearchData();
}else{
mAdapter.changeMoreStatus(mAdapter.NO_LOAD_MORE);
}
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
// if (dy > 0) {
visibleItemCount = layoutManager.getChildCount();
totalItemCount = layoutManager.getItemCount();
pastVisiblesItems = layoutManager.findFirstVisibleItemPosition();
// }
Log.d(TAG, String.format("onScrolled:dy %s,visibleItemCount %s,totalItemCount %s,pastVisiblesItems %s ",
dy, visibleItemCount,totalItemCount,pastVisiblesItems));
//最后一个可见的ITEM
lastVisibleItem=layoutManager.findLastVisibleItemPosition();
lastVisibleItem=layoutManager.findLastCompletelyVisibleItemPosition();
}
});
}
//----------------绑定列表
void initialBookList() {
// rvPaihang.setLayoutManager(new LinearLayoutManager(activity));
// rvPaihang.setAdapter(mAdapter);
}
@BindView(R.id.tvHint)
TextView tvHint;
//------------滑动监听
@Override
public void setFTag() {
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(TAG);
}
@Override
public void onPause(){
super.onPause();
MobclickAgent.onPageEnd(TAG);
}
}