亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

SwipeRefreshLayout+RecyclerView實現上拉刷新和下拉刷新功能

2019-10-21 21:27:10
字體:
來源:轉載
供稿:網友

SwipeRefreshLayout 是谷歌公司推出的用于下拉刷新的控件,SwipeRefreshLayout已經被放到了sdk中,在Version 19.1之后SwipeRefreshLayout 被放到support v4中。

源碼在SDK/sdk/extras/android/support/v4/src/java/android/support/v4/widget/SwipeRefreshLayout.java

谷歌公司只提供了下拉刷新的功能,RecyclerView的出現基本就是為了替代ListView,GridView的。

今天說一下最常見的下拉刷新  和 上拉刷新的功能。

布局文件:

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/swipe_refresh_widget" android:layout_width="match_parent" android:layout_height="match_parent" >  <android.support.v7.widget.RecyclerView  android:id="@android:id/list"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:cacheColorHint="@null"  android:scrollbars="vertical" /> </android.support.v4.widget.SwipeRefreshLayout>

在Activity中引用這個布局并初始化

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);  mSwipeRefreshWidget = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget); mRecyclerView = (RecyclerView) findViewById(android.R.id.list);  mSwipeRefreshWidget.setColorScheme(R.color.color1, R.color.color2, R.color.color3, R.color.color4); mSwipeRefreshWidget.setOnRefreshListener(this);  // 這句話是為了,第一次進入頁面的時候顯示加載進度條 mSwipeRefreshWidget.setProgressViewOffset(false, 0, (int) TypedValue .applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources()  .getDisplayMetrics()));  mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {  @Override public void onScrollStateChanged(RecyclerView recyclerView,  int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE  && lastVisibleItem + 1 == adapter.getItemCount()) {  mSwipeRefreshWidget.setRefreshing(true);  // 此處在現實項目中,請換成網絡請求數據代碼,sendRequest .....  handler.sendEmptyMessageDelayed(0, 3000); } }  @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); lastVisibleItem = mLayoutManager.findLastVisibleItemPosition(); }  });  mRecyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setItemAnimator(new DefaultItemAnimator());  adapter = new SampleAdapter(); mRecyclerView.setAdapter(adapter);  // 此處在現實項目中,請換成網絡請求數據代碼,sendRequest ..... handler.sendEmptyMessageDelayed(0, 3000); }

SwipeRefreshLayout里面需要注意的Api:

1、setOnRefreshListener(OnRefreshListener listener)  設置下拉監聽,當用戶下拉的時候會去執行回調
2、setColorSchemeColors(int... colors) 設置 進度條的顏色變化,最多可以設置4種顏色
3、setProgressViewOffset(boolean scale, int start, int end) 調整進度條距離屏幕頂部的距離
4、setRefreshing(boolean refreshing) 設置SwipeRefreshLayout當前是否處于刷新狀態,一般是在請求數據的時候設置為true,在數據被加載到View中后,設置為false。

RecyclerView的實現:

第一種,下拉刷新和上拉刷新都用SwipeRefreshLayout 自帶的進度條

mRecyclerView = (RecyclerView) findViewById(android.R.id.list);mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {  @Override public void onScrollStateChanged(RecyclerView recyclerView,  int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE  && lastVisibleItem + 1 == adapter.getItemCount()) {  mSwipeRefreshWidget.setRefreshing(true);  // 此處在現實項目中,請換成網絡請求數據代碼,sendRequest .....  handler.sendEmptyMessageDelayed(0, 3000); } }  @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); lastVisibleItem = mLayoutManager.findLastVisibleItemPosition(); } });  mRecyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setItemAnimator(new DefaultItemAnimator());  adapter = new SampleAdapter(); mRecyclerView.setAdapter(adapter);

第二種實現下拉刷新用SwipeRefreshLayout 自帶的進度條, 上拉刷新用類似ListView的刷新 提示“加載中”等信息。

我們可以給RecyclerView 也添加一個類似FooterView的item。
我們在Adapter中實現:

public class SampleAdapter extends RecyclerView.Adapter<ViewHolder> { private List<Integer> list;  private static final int TYPE_ITEM = 0; private static final int TYPE_FOOTER = 1;  public List<Integer> getList() { return list; }  public SampleAdapter() { list = new ArrayList<Integer>(); }  // RecyclerView的count設置為數據總條數+ 1(footerView) @Override public int getItemCount() { return list.size() + 1; }  @Override public int getItemViewType(int position) { // 最后一個item設置為footerView if (position + 1 == getItemCount()) { return TYPE_FOOTER; } else { return TYPE_ITEM; } }  @Override public void onBindViewHolder(ViewHolder holder, final int position) { if (holder instanceof ItemViewHolder) { ((ItemViewHolder) holder).textView.setText(String.valueOf(list  .get(position))); } }  @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_ITEM) { View view = LayoutInflater.from(parent.getContext()).inflate(  R.layout.list_item_text, null); view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT)); return new ItemViewHolder(view); } // type == TYPE_FOOTER 返回footerView else if (viewType == TYPE_FOOTER) { View view = LayoutInflater.from(parent.getContext()).inflate(  R.layout.footerview, null); view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT)); return new FooterViewHolder(view); }  return null; }  class FooterViewHolder extends ViewHolder {  public FooterViewHolder(View view) { super(view); }  }  class ItemViewHolder extends ViewHolder { TextView textView;  public ItemViewHolder(View view) { super(view); textView = (TextView) view.findViewById(R.id.text); } }}

這樣我們就可以針對footerview的布局做一些處理了,比如提示“加載中,”,“已經全部加載”等信息。更加靈活一點。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
麻豆一区二区在线观看| 一区二区欧美激情| 成人免费在线视频网址| 亚洲另类激情图| 91国产精品视频在线| 色婷婷成人综合| 欧美日韩亚洲高清| 国产精品精品国产| 国产精品直播网红| 国产97在线亚洲| 欧美诱惑福利视频| 欧美国产日韩中文字幕在线| 欧美性xxxx极品高清hd直播| 国内精品视频久久| 精品国产一区二区三区四区在线观看| 国产精品极品美女在线观看免费| 亚洲欧美国产精品va在线观看| 国产精品色婷婷视频| 亚洲欧美激情四射在线日| 亚洲iv一区二区三区| 日韩av日韩在线观看| 国外色69视频在线观看| 亚洲伦理中文字幕| 国内精品久久久久伊人av| 红桃av永久久久| 日韩亚洲国产中文字幕| 亚洲成在人线av| 久久高清视频免费| 国产亚洲精品久久久久动| 日韩av电影在线免费播放| 欧洲成人在线观看| 国产精品1区2区在线观看| 欧美人交a欧美精品| 国产精品露脸av在线| 国产精品日韩在线观看| 亚洲欧美日韩视频一区| 福利精品视频在线| 91高清视频免费观看| 欧美剧在线观看| 欧美成人亚洲成人| 欧美日韩在线视频观看| 97av在线影院| 日韩欧美在线中文字幕| 九九九热精品免费视频观看网站| 美日韩精品免费观看视频| 日韩电影中文字幕在线观看| 国产精品91久久久久久| 国产精品永久免费在线| 欧美在线亚洲在线| 国产精品久久久精品| 亚洲夜晚福利在线观看| 亚洲免费人成在线视频观看| 成人午夜激情免费视频| 国产精品露脸自拍| 成人性生交大片免费看小说| 日韩av免费在线播放| 亚洲色图欧美制服丝袜另类第一页| 91精品综合久久久久久五月天| 性色av香蕉一区二区| 日韩国产欧美精品在线| 色悠久久久久综合先锋影音下载| 国产亚洲成av人片在线观看桃| 国产精品欧美一区二区| 久久久精品久久| 91性高湖久久久久久久久_久久99| 久久久影视精品| 中文综合在线观看| 欧美激情国内偷拍| 欧美激情女人20p| 成人乱人伦精品视频在线观看| 亚洲精品一区二区网址| 在线播放日韩专区| 久久综合五月天| 国产一区二区三区四区福利| zzijzzij亚洲日本成熟少妇| 国产一区av在线| 久久精品电影网站| 91久久在线播放| 成人久久一区二区三区| 国产精品白嫩美女在线观看| 亚洲欧美制服第一页| 国产一区二区三区在线| 欧美日韩中文字幕综合视频| 91精品视频免费看| 亚洲一区www| 91国内产香蕉| 国产精品一区二区三区成人| 另类图片亚洲另类| 色多多国产成人永久免费网站| 亚洲欧美日韩精品久久奇米色影视| 国产精品91一区| 精品一区二区亚洲| 红桃av永久久久| 国产精品久久久久久久av大片| 亚洲综合成人婷婷小说| 欧美日韩一区免费| www日韩中文字幕在线看| 日本亚洲欧洲色| 欧美精品情趣视频| 在线激情影院一区| 最近2019年日本中文免费字幕| 69久久夜色精品国产7777| 亚洲综合中文字幕68页| 亚洲国产欧美自拍| 亚洲国产一区自拍| 成人精品久久一区二区三区| 一区二区三区视频观看| 久久久人成影片一区二区三区| 欧美性猛交xxxx乱大交3| 亚洲免费伊人电影在线观看av| 国产日韩一区在线| 色七七影院综合| 综合网日日天干夜夜久久| 国产欧美久久久久久| www.亚洲人.com| 亚洲国模精品私拍| 亚洲国产91精品在线观看| 95av在线视频| 中文字幕亚洲字幕| 欧美成人精品在线播放| 91精品在线播放| 日本精品久久久久影院| 成人欧美一区二区三区黑人孕妇| 欧美国产日产韩国视频| 日韩av在线电影网| 色偷偷偷综合中文字幕;dd| 97精品在线观看| 国产脚交av在线一区二区| 91精品视频一区| 91久久久久久久久久| 亚洲综合小说区| 欧美精品情趣视频| 国产午夜精品全部视频播放| 中文精品99久久国产香蕉| 亚洲激情视频在线播放| 色琪琪综合男人的天堂aⅴ视频| 欧美电影免费播放| 国产亚洲一级高清| 91久久夜色精品国产网站| 欧美高清视频一区二区| 国产精品一区二区三区免费视频| 91精品国产网站| 日韩精品在线免费观看视频| 亚洲欧美日韩成人| 久久九九全国免费精品观看| 日韩欧美精品中文字幕| 欧美人在线视频| 91精品国产色综合久久不卡98| 日韩精品在线免费| 欧美日韩色婷婷| 欧美成人午夜剧场免费观看| 久久色免费在线视频| 亚洲free嫩bbb| 亚洲缚视频在线观看| 亚洲一区二区三区xxx视频| 91亚洲精品在线观看| 国产精品久久久久免费a∨| 精品偷拍各种wc美女嘘嘘| 国产精品亚洲自拍| 亚洲iv一区二区三区| 亚洲国产欧美一区二区三区同亚洲| 国模吧一区二区三区| 久久久久国色av免费观看性色| 日韩欧美中文字幕在线播放|