VIewPager无限轮播+PullToRefreshListView上下拉刷新加载数据

package com.example.ggq.xiaomi.activity;

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.example.ggq.xiaomi.R;
import com.example.ggq.xiaomi.activity.adapter.BannerAdapter;
import com.example.ggq.xiaomi.activity.adapter.GoodsAdapter;
import com.example.ggq.xiaomi.activity.bean.GoodsBean;
import com.example.ggq.xiaomi.activity.bean.banner.BannerBean;
import com.example.ggq.xiaomi.activity.net.HttpUtils;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.util.ArrayList;
import java.util.List;

public class GoodsActivity extends AppCompatActivity {

    private static final int CODE_BANNER = 1;
    private static final int CODE_LIST = 2;
    private static final int CODE_START_BANNER = 3;
    private PullToRefreshListView list_view;
    private List<GoodsBean.DataBean> dataBeans = new ArrayList<>();
    private HttpUtils httpUtils;
    private String bannerApi = "https://www.zhaoapi.cn/quarter/getAd";
    private String listApi = "https://www.zhaoapi.cn/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA&source=android&page=";
    private int page = 1;
    private BannerCallback bannerCallback = new BannerCallback();
    private ListCallback listCallback = new ListCallback();
    private String TAG = GoodsActivity.class.getSimpleName();
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case CODE_BANNER://解析轮播数据
                    Gson bannerGson = new Gson();
                    BannerBean bannerBean = bannerGson.fromJson((String) msg.obj, BannerBean.class);
                    bannerBeanData = bannerBean.getData();
                    view_pager.setAdapter(new BannerAdapter(GoodsActivity.this,bannerBeanData,text_num,head_title));
                    sendEmptyMessageDelayed(CODE_START_BANNER,2000);
                    break;
                case CODE_LIST:
                    Gson gson = new Gson();
                    GoodsBean goodsBean = gson.fromJson((String) msg.obj, GoodsBean.class);
                    if(page == 1){
                        dataBeans.clear();
                    }
                    dataBeans.addAll(goodsBean.getData());
                    adapter.notifyDataSetChanged();
                    list_view.onRefreshComplete();
                    break;
                case CODE_START_BANNER:
                    int currentItem = view_pager.getCurrentItem();
                    view_pager.setCurrentItem((currentItem+1));
                    sendEmptyMessageDelayed(CODE_START_BANNER,2000);
                    break;
            }
        }
    };
    private List<BannerBean.DataBean> bannerBeanData;
    private GoodsAdapter adapter;
    private ViewPager view_pager;
    private TextView head_title;
    private TextView text_num;
    private LinearLayout head_linear;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_goods);
        list_view = findViewById(R.id.pull_to_refresh_goods_list_view);
        list_view.setMode(PullToRefreshBase.Mode.BOTH);
        //添加轮播
        ListView listView = list_view.getRefreshableView();
        View headView = View.inflate(GoodsActivity.this, R.layout.banner_layout, null);
        view_pager = headView.findViewById(R.id.head_view_pager);
        head_title = headView.findViewById(R.id.head_title);
        text_num = headView.findViewById(R.id.head_num);
        head_linear = headView.findViewById(R.id.head_linear);
        listView.addHeaderView(headView);

        httpUtils = HttpUtils.getInstance();
        httpUtils.get(bannerApi, bannerCallback);
        httpUtils.get(listApi + page, listCallback);
        adapter = new GoodsAdapter(GoodsActivity.this, dataBeans);
        list_view.setAdapter(adapter);
    }

    class BannerCallback implements HttpUtils.NetCallback {

        @Override
        public void onSuccess(String s) {
            Message bannerMessage = Message.obtain();
            bannerMessage.what = CODE_BANNER;
            bannerMessage.obj = s;
            handler.sendMessage(bannerMessage);
        }

        @Override
        public void onError(String errorMsg) {
            Log.i("+++", "banner" + errorMsg);
        }
    }

    class ListCallback implements HttpUtils.NetCallback {

        @Override
        public void onSuccess(String s) {
            Message listMessage = Message.obtain();
            listMessage.what = CODE_LIST;
            listMessage.obj = s;
            handler.sendMessage(listMessage);
        }

        @Override
        public void onError(String errorMsg) {
            Log.i("+++", "list" + errorMsg);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42470335/article/details/80848892