GridView+Fragment+上拉下拉+json解析+适配器

该博客介绍了如何在Android中创建一个使用GridView和Fragment的组件,实现了上拉加载更多和下拉刷新的功能。通过HTTP请求获取JSON数据,使用Gson库进行解析,并结合自定义Adapter展示内容。

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

public class GridViewFragment extends Fragment{


    private PullToRefreshGridView gridView;
    private String path;
    private int page_num;
    private List<GridDataDataBean.DataBean> list = new ArrayList<>();
    private GridViewAdapter adapter;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_gridview_item, container, false);
        gridView = view.findViewById(R.id.refresh_grid_view);
        return view;
    }


    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=";
        page_num = 1;


        getDataFromNet("refresh");


        gridView.setMode(PullToRefreshBase.Mode.BOTH);
        ILoadingLayout startLabels = gridView.getLoadingLayoutProxy(true, false);
        startLabels.setPullLabel("下拉刷新");
        startLabels.setRefreshingLabel("正在拉");
        startLabels.setReleaseLabel("放开刷新");
        ILoadingLayout endLabels = gridView.getLoadingLayoutProxy(false, true);
        endLabels.setPullLabel("上拉刷新");
        endLabels.setRefreshingLabel("正在载入...");
        endLabels.setReleaseLabel("放开刷新...");
        gridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
                page_num = 1;
                getDataFromNet("operate");
            }


            @Override
            public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
                page_num++;
                getDataFromNet("load");
            }
        });
    }


    private void getDataFromNet(final String operate) {
        HttpUtil.requestDataByHttp(path + page_num, getActivity(), new HttpCallBack() {
            @Override
            public void onRequestComplete(String json) {
                Gson gson = new Gson();
                GridDataDataBean gridDataDataBean = gson.fromJson(json, GridDataDataBean.class);
                List<GridDataDataBean.DataBean> data = gridDataDataBean.getData();
                if(operate.equals("refresh")){
                    list.clear();
                    list.addAll(0, data);
                }else if(operate.equals("load")){
                    list.addAll(data);
                }
                setAdapter();
            }
        });
    }


    private void setAdapter(){
        if(adapter == null){
            adapter = new GridViewAdapter(getActivity(), list);
            gridView.setAdapter(adapter);
        }else{
            adapter.notifyDataSetChanged();
        }
        gridView.onRefreshComplete();
        gridView.setLastUpdatedLabel(new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值