PullToRefreshGridView

主界面

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <com.handmark.pulltorefresh.library.PullToRefreshGridView
        android:id="@+id/pull_to_refresh_gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:numColumns="2" />




</LinearLayout>


子布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <ImageView
        android:id="@+id/fuli_item_pic"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_launcher" />


</LinearLayout>




   java代码


public class FuLiFragment extends Fragment {
    private static final String TAG = "FuLiFragment---";
    private View view;
    private PullToRefreshGridView gridView;
    private int page = 1;
    private List<FuLi.ResultsBean> list = new ArrayList<>();
    private MyGridAdapter myListAdapter;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fuli_layout, null);
        initViews();
        return view;
    }


    private void initViews() {
        gridView = view.findViewById(R.id.pull_to_refresh_gridview);
        //开启下拉和上啦刷新
        gridView.setMode(PullToRefreshBase.Mode.BOTH);
        //设置监听
        gridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
                //刷新
                page = 1;
                getDataFromNet();
            }


            @Override
            public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
                //加载更多
                page++;
                getDataFromNet();
            }
        });
    }


    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        myListAdapter = new MyGridAdapter(getContext(), list);


        gridView.setAdapter(myListAdapter);




    }




    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser){
            //请求网络数据数据
            getDataFromNet();
        }
    }


    private void getDataFromNet() {
        HttpUtils httpUtils = HttpUtils.getInstance();
        httpUtils.get(HttpConfig.FULI_URL + page);
        httpUtils.setHttpUtilsListener(new HttpUtils.HttpUtilListener() {
            @Override
            public void getSuccess(String json) {
                Log.d(TAG, "---数据---: " + json);
                Gson gson = new Gson();
                FuLi fuLiBean = gson.fromJson(json, FuLi.class);


                if (page == 1) {
                    list.clear();
                }


                list.addAll(fuLiBean.getResults());


                myListAdapter.notifyDataSetChanged();


                gridView.onRefreshComplete();


            }


            @Override
            public void getError(String error) {
                Log.d(TAG, "getError: " + error);
            }
        });
    }


    public static FuLiFragment create(String title) {
        Bundle bundle = new Bundle();
        bundle.putString("title", title);
        FuLiFragment f = new FuLiFragment();
        f.setArguments(bundle);
        return f;
    }

}



适配器

public class MyGridAdapter extends BaseAdapter {


    private static final String TAG = "MyGridAdapter*****";


    private Context context;
    private List<FuLi.ResultsBean> list;


    public MyGridAdapter(Context context, List<FuLi.ResultsBean> list) {
        this.context = context;
        this.list = list;
    }


    @Override
    public int getCount() {
        return list.size();
    }


    @Override
    public Object getItem(int position) {
        return list.get(position);
    }


    @Override
    public long getItemId(int position) {
        return position;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.item_fuli, null);
           holder= new ViewHolder();
                    holder.imageView = convertView.findViewById(R.id.fuli_item_pic);
              convertView.setTag(holder);


        } else {
           holder = (ViewHolder) convertView.getTag();
        }


        //


        String url = list.get(position).getUrl();


        if (!TextUtils.isEmpty(url)){
            Log.d(TAG, "getView: "+url);
            ImageLoader.getInstance().displayImage(url, holder.imageView, MyApp.getOptions());


        }




        return convertView;
    }


    class ViewHolder {
        ImageView imageView;
    }


}

猜你喜欢

转载自blog.csdn.net/qq_41637459/article/details/80471548