package com.example.ggq.gaoguoqing20180728.fragment.channel;
import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import com.example.ggq.gaoguoqing20180728.R;
import com.example.ggq.gaoguoqing20180728.adapter.BannerAdapter;
import com.example.ggq.gaoguoqing20180728.adapter.MyBaseAdapter;
import com.example.ggq.gaoguoqing20180728.base.BaseFragmnet;
import com.example.ggq.gaoguoqing20180728.bean.BannerBean;
import com.example.ggq.gaoguoqing20180728.bean.Data;
import com.example.ggq.gaoguoqing20180728.database.Dao;
import com.example.ggq.gaoguoqing20180728.database.DataBean;
import com.example.ggq.gaoguoqing20180728.utils.Httputils;
import com.example.ggq.gaoguoqing20180728.utils.NetUtils;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class ChannelOneFragment extends BaseFragmnet {
private PullToRefreshListView list_view;
private Httputils httputils;
private String url = "http://ttpc.dftoutiao.com/jsonpc/refresh?type=";
private int page = 5010;
private DataCallback callback = new DataCallback();
private static final String TAG = "ChannelOneFragment";
private MyBaseAdapter adapter;
private List<Data.DataBean> list;
@SuppressLint("HandlerLeak")
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what == 0){
int currentItem = view_pager.getCurrentItem();
currentItem++;
view_pager.setCurrentItem(currentItem);
changePointState(currentItem%points.size());
sendEmptyMessageDelayed(0,1000);
}
}
};
private Dao dao;
private ViewPager view_pager;
private LinearLayout ll_point;
private List<ImageView> bannerImages;
private List<ImageView> points;
private BannerCallback bannerCallback = new BannerCallback();
private String bannerApi = "http://www.xieast.com/api/banner.php";
@Override
protected void initData() {
httputils = Httputils.getInstance();
httputils.get(url+page,callback);
list_view.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page = 5010;
httputils.get(url+page,callback);
list_view.onRefreshComplete();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
page++;
httputils.get(url+page,callback);
list_view.onRefreshComplete();
}
});
/**
*
*@作者 ggq
*
* 轮播
*@创建日期 2018/7/29 15:10
*/
ListView refreshableView = list_view.getRefreshableView();
View view = LayoutInflater.from(getContext()).inflate(R.layout.banner_layout, null);
view_pager = view.findViewById(R.id.banner_view_pager);
ll_point = view.findViewById(R.id.ll_point);
bannerImages = new ArrayList<>();
points = new ArrayList<>();
//设置头布局的布局参数
AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, 300);
view.setLayoutParams(params);
//添加头布局
refreshableView.addHeaderView(view);
//请求轮播
httputils.get(bannerApi,bannerCallback);
//给适配器一个空数据
list = new ArrayList<>();
adapter = new MyBaseAdapter(getActivity(),list);
list_view.setAdapter(adapter);
//查询数据库
dao = new Dao(getActivity());
DataBean bean = dao.loadData(url + page);
Log.d(TAG, "initData: "+bean);
if(bean != null){
showData(bean.json);
}else {
//判断网络
if(NetUtils.isNetConnect(getActivity())){
httputils.get(url+page,callback);
}else {
Toast.makeText(getActivity(), "没有网络了,请连接网络", Toast.LENGTH_SHORT).show();
}
}
}
private void showData(String json) {
Gson gson = new Gson();
Data data = gson.fromJson(json, Data.class);
if(page == 5010){
list.clear();
}
list.addAll(data.getData());
//使用HashSet去除重复
HashSet hashSet = new HashSet(list);
list.clear();
list.addAll(hashSet);
adapter.notifyDataSetChanged();
list_view.postDelayed(new Runnable() {
@Override
public void run() {
list_view.onRefreshComplete();
}
},1000);
}
@Override
protected void initView(View view) {
list_view = view.findViewById(R.id.pull_to_refresh_list_view);
list_view.setMode(PullToRefreshBase.Mode.BOTH);
}
@Override
protected int getLayoutId() {
return R.layout.fragment_channel_one;
}
public class DataCallback implements Httputils.NetCallback{
@Override
public void onSuccess(String s) {
String replace = s.replace("null(", "").replace(")", "");
Log.d(TAG, "onSuccess: "+replace);
dao.insert(new DataBean(url+page,replace));
showData(replace);
}
@Override
public void onError(String msg) {
Log.d(TAG, "onError: "+msg);
}
}
class BannerCallback implements Httputils.NetCallback{
@Override
public void onSuccess(String s) {
Gson gson = new Gson();
BannerBean bannerBean = gson.fromJson(s, BannerBean.class);
for (int i = 0; i < bannerBean.getData().size(); i++) {
ImageView imageView = new ImageView(getActivity());
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
ImageLoader.getInstance().displayImage(bannerBean.getData().get(i).getImg(),imageView);
bannerImages.add(imageView);
//添加小圆点
ImageView point = new ImageView(getActivity());
point.setImageResource(R.drawable.shape_gray);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(30, 30);
params.leftMargin = 10;
ll_point.addView(point,params);
points.add(point);
}
view_pager.setAdapter(new BannerAdapter(bannerImages));
//改变小圆点状态
changePointState(0);
handler.sendEmptyMessageDelayed(0,1000);
}
@Override
public void onError(String msg) {
}
}
private void changePointState(int i) {
for (int j = 0; j < points.size(); j++) {
if(i == j){
points.get(j).setImageResource(R.drawable.shape_red);
}else {
points.get(j).setImageResource(R.drawable.shape_gray);
}
}
}
}
数据展示(网络判断+数据库+无限轮播)
猜你喜欢
转载自blog.csdn.net/weixin_42470335/article/details/81271325
今日推荐
周排行