中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android如何使用SwipeRefreshLayout實現ListView下拉刷新上拉加載

發布時間:2021-08-05 14:12:16 來源:億速云 閱讀:228 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關android如何使用SwipeRefreshLayout實現ListView下拉刷新上拉加載,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體內容如下

android如何使用SwipeRefreshLayout實現ListView下拉刷新上拉加載

這次使用的是系統的SwipeRefreshLayout實現下拉刷新,和設置ListView的滑動監聽判斷是否滑動到最底部然后加載更多;
這個要比PullToRefreshListView簡單很多,想PullToRefreshListView實現下拉刷新上拉加載的可以看這篇博客:
android使用PullToRefresh框架實現ListView下拉刷新上拉加載更多

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

首先說下SwipeRefreshLayout的五個方法:

1、setOnRefreshListener():設置手勢滑動監聽器。
2、setProgressBackgroundColor():設置進度圈的背景色。
3、setColorSchemeResources():設置進度動畫的顏色。
4、setRefreshing():設置組件的刷洗狀態。
5、setSize():設置進度圈的大小

這個大家簡單了解一下,下面代碼中都一一用到;

首先說下布局文件,如果想用SwipeRefreshLayout實現下拉刷新必須把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所以下拉的時候直接發送一個延時1秒的handler,然后添加數據刷新adapter;
上拉加載更多的時候直接給ListVIew設置了一個滑動監聽,判斷是否滑動到adapter的最下面,然后加載數據,刷新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); 
  //設置進度圈的大小;(這里面只有兩個值SwipeRefreshLayout.LARGE和DEFAULT,后者是默認效果) 
  swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE); 
  //設置進度圈的背景色。這里隨便給他設置了一個顏色:淺綠色 
  swipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.CYAN); 
  //設置進度動畫的顏色。這里面最多可以指定四個顏色,我這也是隨機設置的,大家知道怎么用就可以了 
  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); 
 
  //設置手勢滑動監聽器 
  swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
   public void onRefresh() { 
    //發送一個延時1秒的handler信息 
    handler.sendEmptyMessageDelayed(199,1000); 
   } 
  }); 
 
  //給listview設置一個滑動的監聽 
  mListView.setOnScrollListener(new AbsListView.OnScrollListener() { 
   //當滑動狀態發生改變的時候執行 
   public void onScrollStateChanged(AbsListView view, int scrollState) { 
    switch (scrollState){ 
     //當不滾動的時候 
     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; 
    } 
   } 
   //正在滑動的時候執行 
   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,"英雄聯盟"); 
    adapter.notifyDataSetChanged(); 
    //設置組件的刷洗狀態;false代表關閉 
    swipeRefreshLayout.setRefreshing(false); 
   } 
  } 
 }; 
}

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

關于“android如何使用SwipeRefreshLayout實現ListView下拉刷新上拉加載”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娱乐| 清河县| 台山市| 溧水县| 信丰县| 沈阳市| 陵川县| 炎陵县| 霍城县| 孝感市| 镶黄旗| 耒阳市| 华阴市| 久治县| 集贤县| 临安市| 南昌县| 东阳市| 哈尔滨市| 密山市| 衡水市| 庆安县| 沙河市| 安国市| 汉阴县| 福海县| 鹤峰县| 晋城| 博罗县| 长沙县| 安达市| 海晏县| 马尔康县| 五常市| 陇西县| 肃南| 乌鲁木齐县| 利辛县| 九寨沟县| 福建省| 太康县|