LunBoTiaoMuPul(fra)

这是一个关于Android开发的博客,介绍如何在Fragment中实现PullToRefreshListView的上拉刷新和下拉加载功能,并结合Gson解析数据。同时,文章还展示了如何创建轮播图并使用Handler进行自动切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.bwei.fragment;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ListView;

import com.bwei.adapter.LunBoAdapter;
import com.bwei.adapter.MyAdapter;
import com.bwei.bean.DataInfo;
import com.bwei.bean.ImageBean;
import com.bwei.day20_rk.R;
import com.bwei.net.UtilsNet;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

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

/**
 * Created by 杨柳 on 2018/7/27.
 */

public class fragment1_1  extends Fragment{

    private PullToRefreshListView pull_layout;
    private UtilsNet utilsNet;
    private int page = 1;
    private String listapi = "http://www.xieast.com/api/news/news.php?page=";
    private String bannerapi = "http://www.xieast.com/api/banner.php";
    private List<DataInfo.DataBean> t_list = new ArrayList<>();
    private MyAdapter myAdapter;
    private ViewPager view_lunbo;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 0:
                    Gson gson = new Gson();
                    ImageBean imageBean = gson.fromJson((String) msg.obj, ImageBean.class);
                    //创建轮播适配器
                    LunBoAdapter lunBoAdapter = new LunBoAdapter(imageBean.getData(), getActivity());
                    view_lunbo.setAdapter(lunBoAdapter);
                    handler.sendEmptyMessageDelayed(1,2000);
                    break;
                case 1:
                    view_lunbo.setCurrentItem(view_lunbo.getCurrentItem()+1);
                    handler.sendEmptyMessageDelayed(1,2000);
                    break;
            }
        }
    };

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.fragment1_1, container, false);
        pull_layout = inflate.findViewById(R.id.pull_layout);
        return inflate;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //1.实现上拉刷新下拉加载(创建工具类)
        utilsNet = UtilsNet.getInstance();
        pull_layout.setMode(PullToRefreshBase.Mode.BOTH);
        //7.轮播
        ListView refreshableView = pull_layout.getRefreshableView();
        AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, 600);
        View inflate = View.inflate(getActivity(), R.layout.lunbo_layout, null);
        view_lunbo = inflate.findViewById(R.id.view_lunbo);
        inflate.setLayoutParams(layoutParams);
        refreshableView.addHeaderView(inflate);
        //2.设置监听方法
        pull_layout.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
                @Override
                public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                    //3.定义page,接口
                page = 1;
                utilsNet.getUrl(listapi+page);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                page++;
                utilsNet.getUrl(listapi+page);
            }
        });
        //6.创建适配器
        myAdapter = new MyAdapter(t_list, getActivity());
        pull_layout.setAdapter(myAdapter);
        //4.调用工具类的方法
        utilsNet.setNetCallBack(new UtilsNet.NetCallBack() {
            @Override
            public void onSeccess(String s) {
                //5.解析
                Gson gson = new Gson();
                DataInfo dataInfo = gson.fromJson(s, DataInfo.class);
                if (page == 1){
                    //定义list
                    t_list.clear();
                }
                t_list.addAll(dataInfo.getData());
                myAdapter.notifyDataSetChanged();
                pull_layout.onRefreshComplete();
            }

            @Override
            public void onError(String e) {

            }
        });
        //3.1:创建方法
        utilsNet.getUrl(listapi+page);

        //8.轮播
        utilsNet.loadInage(bannerapi, new UtilsNet.NetCallBack() {
            @Override
            public void onSeccess(String s) {
                Message message = Message.obtain();
                message.what = 0 ;
                message.obj = s;
                handler.sendMessage(message);
            }

            @Override
            public void onError(String e) {

            }
        });
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值