国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

android使用SwipeRefreshLayout實(shí)現(xiàn)ListView下拉刷新上拉加載

2019-10-22 18:21:23
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了android實(shí)現(xiàn)ListView下拉刷新上拉加載的具體代碼,供大家參考,具體內(nèi)容如下

android,SwipeRefreshLayout,ListView,下拉刷新,上拉加載

這次使用的是系統(tǒng)的SwipeRefreshLayout實(shí)現(xiàn)下拉刷新,和設(shè)置ListView的滑動(dòng)監(jiān)聽判斷是否滑動(dòng)到最底部然后加載更多;
這個(gè)要比PullToRefreshListView簡(jiǎn)單很多,想PullToRefreshListView實(shí)現(xiàn)下拉刷新上拉加載的可以看這篇博客:
android使用PullToRefresh框架實(shí)現(xiàn)ListView下拉刷新上拉加載更多

至于使用哪一種大家可以根據(jù)產(chǎn)品的需求選擇,這兩種刷新目前為止世面上還是使用PullToRefreshListView的比較多;

首先說下SwipeRefreshLayout的五個(gè)方法:

1、setOnRefreshListener():設(shè)置手勢(shì)滑動(dòng)監(jiān)聽器。
2、setProgressBackgroundColor():設(shè)置進(jìn)度圈的背景色。
3、setColorSchemeResources():設(shè)置進(jìn)度動(dòng)畫的顏色。
4、setRefreshing():設(shè)置組件的刷洗狀態(tài)。
5、setSize():設(shè)置進(jìn)度圈的大小

這個(gè)大家簡(jiǎn)單了解一下,下面代碼中都一一用到;

首先說下布局文件,如果想用SwipeRefreshLayout實(shí)現(xiàn)下拉刷新必須把ListView寫到SwipeRefreshLayout布局里面;

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:id="@+id/srfl">   <ListView   android:layout_width="match_parent"   android:layout_height="match_parent"   android:id="@+id/listview" /> </android.support.v4.widget.SwipeRefreshLayout> 

我這邊是自己寫的小Demo所以下拉的時(shí)候直接發(fā)送一個(gè)延時(shí)1秒的handler,然后添加數(shù)據(jù)刷新adapter;
上拉加載更多的時(shí)候直接給ListVIew設(shè)置了一個(gè)滑動(dòng)監(jiān)聽,判斷是否滑動(dòng)到adapter的最下面,然后加載數(shù)據(jù),刷新adapter;

public class MainActivity extends Activity {  private ListView mListView;  private SwipeRefreshLayout swipeRefreshLayout;  private List<String> stringList=new ArrayList<>();  private ArrayAdapter<String> adapter;  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);      for (int x=0 ; x<16;x++){    stringList.add("新浪微博:搏擊愛好者Z"+"---"+x);   }   initView();  }   private void initView() {   swipeRefreshLayout= (SwipeRefreshLayout) findViewById(R.id.srfl);   //設(shè)置進(jìn)度圈的大小;(這里面只有兩個(gè)值SwipeRefreshLayout.LARGE和DEFAULT,后者是默認(rèn)效果)   swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);   //設(shè)置進(jìn)度圈的背景色。這里隨便給他設(shè)置了一個(gè)顏色:淺綠色   swipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.CYAN);   //設(shè)置進(jìn)度動(dòng)畫的顏色。這里面最多可以指定四個(gè)顏色,我這也是隨機(jī)設(shè)置的,大家知道怎么用就可以了   swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_orange_dark     ,android.R.color.holo_blue_dark     ,android.R.color.holo_red_dark     ,android.R.color.widget_edittext_dark);   mListView= (ListView) findViewById(R.id.listview);   adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, stringList);   mListView.setAdapter(adapter);    //設(shè)置手勢(shì)滑動(dòng)監(jiān)聽器   swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {    public void onRefresh() {     //發(fā)送一個(gè)延時(shí)1秒的handler信息     handler.sendEmptyMessageDelayed(199,1000);    }   });    //給listview設(shè)置一個(gè)滑動(dòng)的監(jiān)聽   mListView.setOnScrollListener(new AbsListView.OnScrollListener() {    //當(dāng)滑動(dòng)狀態(tài)發(fā)生改變的時(shí)候執(zhí)行    public void onScrollStateChanged(AbsListView view, int scrollState) {     switch (scrollState){      //當(dāng)不滾動(dòng)的時(shí)候      case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:        //判斷是否是最底部       if(view.getLastVisiblePosition()==(view.getCount())-1){        for(int x=0;x<5;x++){         stringList.add(stringList.size(),"魔獸世界"+x);        }        adapter.notifyDataSetChanged();       }       break;     }    }    //正在滑動(dòng)的時(shí)候執(zhí)行    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {    }   });  }   private Handler handler=new Handler(){   @Override   public void handleMessage(Message msg) {    if(msg.what==199){     stringList.add(0,"英雄聯(lián)盟");     adapter.notifyDataSetChanged();     //設(shè)置組件的刷洗狀態(tài);false代表關(guān)閉     swipeRefreshLayout.setRefreshing(false);    }   }  }; } 

這里面為了給大家演示SwipeRefreshLayout的幾個(gè)方法,如果全部使用默認(rèn)可以把setProgressBackgroundColor():setColorSchemeResources():setSize():這三個(gè)方法去掉。
這樣代碼會(huì)更少,默認(rèn)效果也非常不錯(cuò),這個(gè)看大家需求。

源碼下載地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 农安县| 大厂| 定安县| 宾阳县| 潮安县| 锦屏县| 渝北区| 六盘水市| 通城县| 平塘县| 洱源县| 涞水县| 平顺县| 鞍山市| 鄂伦春自治旗| 江孜县| 富宁县| 大竹县| 保康县| 郸城县| 包头市| 沧州市| 昌都县| 泉州市| 衡水市| 荣昌县| 应用必备| 东兰县| 正蓝旗| 中江县| 额尔古纳市| 中西区| 章丘市| 鹤庆县| 天峨县| 茂名市| 灵璧县| 兰州市| 开封市| 柯坪县| 新龙县|