• PullToRefreshGridView上拉刷新,下拉加载


    PullToRefreshGridView上拉刷新,下拉加载

    布局:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:tools="http://schemas.android.com/tools"
     4     android:id="@+id/activity_main"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     tools:context="com.example.asus.pull_1.Activity.MainActivity">
     8 
     9    <com.handmark.pulltorefresh.library.PullToRefreshGridView
    10        android:id="@+id/gridview"
    11        android:layout_width="match_parent"
    12        android:layout_height="match_parent">
    13 
    14    </com.handmark.pulltorefresh.library.PullToRefreshGridView>
    15 </RelativeLayout>

    Activity:

     1 public class MainActivity extends AppCompatActivity {
     2 
     3     @BindView(R.id.gridview)
     4     PullToRefreshGridView gridview;
     5     private int index=1;
     6     private ArrayList<Bean.DataBean> list;
     7     private AdapterListe adapterListe;
     8     private Retrofit builder;
     9 
    10     @Override
    11     protected void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.activity_main);
    14         ButterKnife.bind(this);
    15         gridview.setMode(PullToRefreshBase.Mode.BOTH);//能下拉刷新和上拉加载  
    16         init();
    17     }
    18 
    19     private void init() {
    20         list = new ArrayList();
    21         adapterListe = new AdapterListe(list, MainActivity.this);//适配器
    22         gridview.setAdapter(adapterListe);
    23         loadData(index);
    24         gridview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
    25            //刷新
    26             @Override
    27             public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
    28                  list.clear();
    29                 loadData(1);
    30                 gridview.postDelayed(new Runnable() {
    31                     @Override
    32                     public void run() {
    33                         gridview.onRefreshComplete();//加载完成后,设置刷新完成
    34                     }
    35                 },1000);
    36             }
    37             //加载
    38             @Override
    39             public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
    40                 index++;
    41                 list.clear();
    42                 loadData(index);
    43                 gridview.postDelayed(new Runnable() {
    44                     @Override
    45                     public void run() {
    46                         gridview.onRefreshComplete();//加载完成后,设置刷新完成
    47                     }
    48                 },1000);
    49             }
    50         });
    51 
    52     }
    53 
    54     private void loadData(int index) {
    55       //解析
    56         builder = new Retrofit.Builder()
    57                 .baseUrl("http://www.qubaobei.com/")
    58                 .addConverterFactory(GsonConverterFactory.create())
    59                 .build();
    60         builder.create(HttpCall.class).getHttpCall(""+index).enqueue(new Callback<Bean>() {
    61             @Override
    62             public void onResponse(Call<Bean> call, Response<Bean> response) {
    63                 list.addAll(response.body().getData());//把获取到的数据放到集合里
    64                 adapterListe.notifyDataSetChanged();//加载完成后,设置刷新完成
    65             }
    66 
    67             @Override
    68             public void onFailure(Call<Bean> call, Throwable t) {
    69                 Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
    70             }
    71         });
    72     }
    73 }

    子布局:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="vertical"
     4     android:layout_width="match_parent"
     5     android:layout_height="wrap_content">
     6     <TextView
     7         android:id="@+id/tv_title"
     8     android:layout_width="match_parent"
     9     android:layout_height="wrap_content" />
    10     <ImageView
    11         android:id="@+id/img"
    12         android:layout_width="match_parent"
    13         android:layout_height="wrap_content" />
    14     <TextView
    15         android:id="@+id/tv_food_str"
    16         android:layout_width="match_parent"
    17         android:layout_height="wrap_content" />
    18 </LinearLayout>

    适配器:

     1 public class AdapterListe extends BaseAdapter{
     2     private List<Bean.DataBean> list;
     3     private Context context;
     4 
     5     public AdapterListe(List<Bean.DataBean> list, Context context) {
     6         this.list = list;
     7         this.context = context;
     8     }
     9 
    10     @Override
    11     public int getCount() {
    12         return list.size();
    13     }
    14 
    15     @Override
    16     public Object getItem(int i) {
    17         return list.get(i);
    18     }
    19 
    20     @Override
    21     public long getItemId(int i) {
    22         return i;
    23     }
    24 
    25     @Override
    26     public View getView(int i, View view, ViewGroup viewGroup) {
    27         view = LayoutInflater.from(context).inflate(R.layout.layout, viewGroup, false);
    28         TextView tv_title,tv_food_str;
    29         ImageView img;
    30         tv_title=view.findViewById(R.id.tv_title);
    31         tv_food_str=view.findViewById(R.id.tv_food_str);
    32         img=view.findViewById(R.id.img);
    33         tv_title.setText(list.get(i).getTitle());
    34         tv_food_str.setText(list.get(i).getFood_str());
    35         Glide.with(context).load(list.get(i).getPic()).into(img);
    36         return view;
    37     }
    38 }

    接口:

    1 public interface HttpCall {
    2     @GET("ios/cf/dish_list.php?stage_id=1&limit=10&page=")//注解(get)获取
    3     Call<Bean> getHttpCall(@Query("page")String page);//注解(@Query)字符串拼接
    4 }

    Bean类就不发了记着加网络权限和Library包添加依赖

  • 相关阅读:
    jmeter压力测试
    反射【类Class、成员变量Field、方法Method】
    模块十 python标准库
    模块五 python常用数据结构
    模块四 python函数
    模块三 python控制流语法
    模块二 python基本数据类型与操作
    第四章后总结文档
    第六章节练习
    第五章节练习
  • 原文地址:https://www.cnblogs.com/SongYongQian/p/8017985.html
Copyright © 2020-2023  润新知