GridView上下拉刷新+Fragment

本文介绍了一个使用PullToRefreshGridView实现下拉刷新和加载更多的功能的Fragment实例。该实例包括了主布局、适配器布局及对应的Fragment和Adapter代码。通过监听下拉刷新和加载更多事件,从网络获取数据并更新视图。

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

//布局主布局

<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" />

//适配器布局

<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" />




//Fragment

public class FuLiFragment extends Fragment {
    private static final String TAG = "FuLiFragment---";
    private View view;
    private PullToRefreshGridView gridView;
    private int page = 1;
    private List<FuLiBean.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(接口 + page);
        httpUtils.setHttpUtilsListener(new HttpUtils.HttpUtilListener() {
            @Override
            public void getSuccess(String json) {
                Log.d(TAG, "---数据---: " + json);
                Gson gson = new Gson();
                FuLiBean fuLiBean = gson.fromJson(json, FuLiBean.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<FuLiBean.ResultsBean> list;

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

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

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

            myViewHolder = new MyViewHolder(imageView);

            convertView.setTag(myViewHolder);

        } else {
            myViewHolder = (MyViewHolder) convertView.getTag();
        }

        //

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

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

        }


        return convertView;
    }

    class MyViewHolder {
        private ImageView imageView;

        public MyViewHolder(ImageView imageView) {
            this.imageView = imageView;
        }

        public ImageView getImageView() {
            return imageView;
        }

        public void setImageView(ImageView imageView) {
            this.imageView = imageView;
        }

    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值