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

来源:互联网 发布:通达信引用周线数据 编辑:程序博客网 时间:2024/06/05 13:21
public class ListViewFragment extends Fragment{


    private PullToRefreshListView listView;
    private String path;
    private int page_num ;
    private List<ListDataDataBean.ResultsBean> data = new ArrayList<>();
    private ListViewAdapter adapter;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_listview_item, container, false);
        listView = view.findViewById(R.id.refresh_list_view);


        return view;
    }


    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);


        path = "http://gank.io/api/data/Android/10/";
        page_num = 1;
        getDataFromNet("refresh");
        listView.setMode(PullToRefreshBase.Mode.BOTH);


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


            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> 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();
                ListDataDataBean listDataDataBean = gson.fromJson(json, ListDataDataBean.class);
                List<ListDataDataBean.ResultsBean> results = listDataDataBean.getResults();
                if(operate.equals("refresh")){
                    data.clear();
                    data.addAll(0, results);
                }else if(operate.equals("load")){
                    data.addAll(results);
                }
                setAdapter();
            }
        });
    }


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


}
原创粉丝点击