日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android-ultra-pull-to-refresh list,[Android]Ultra-Pull-To-Refresh之listview下拉刷新、上拉加载的用例...

發布時間:2024/10/8 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android-ultra-pull-to-refresh list,[Android]Ultra-Pull-To-Refresh之listview下拉刷新、上拉加载的用例... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

app中最常見的場景莫過于下拉刷新和自動加載的功能了,最經典的開源組件就是

本次demo的編輯環境為android studio,java1.8

截圖

使用

1.本示例依賴jar如下:

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:23.1.1'

compile 'de.greenrobot:eventbus:2.4.0'

compile('in.srain.cube:ultra-ptr:1.0.9.1-SNAPSHOT@aar') {

exclude group: 'in.srain.cube', module: 'clog'

}

compile('in.srain.cube:cube-sdk:1.0.44.33-SNAPSHOT@aar') {

exclude group: 'in.srain.cube', module: 'clog'

}

}

2.xml中的內容:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="loadmore.example.jan.org.loadmoredemo.MainActivity">

android:id="@+id/load_more_list_view_ptr_frame"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/load_more_list_view_container"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/cube_mints_white">

android:id="@+id/load_more_listview"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:divider="@null"

android:fadingEdge="none"

android:listSelector="@android:color/transparent"

android:paddingLeft="12dp"

android:paddingRight="12dp"

android:scrollbarStyle="outsideOverlay" />

PtrClassicFrameLayout 是一個可以起到下拉刷新的實現的父類布局,而LoadMoreListViewContainer則是加載更多的布局控件。

3.MainActivity.java demo主要的代碼實現,步驟和說明已注釋

/**

* 利用android-Ultra-Pull-To-Refresh,上拉刷新和上拉加載的簡單的dome

*/

public class MainActivity extends AppCompatActivity {

private PtrFrameLayout mPtrFrameLayout;

private LoadMoreListViewContainer mLoadMoreListViewContainer;

private ListView mListView;

private List mockStrList = new ArrayList<>();

private int start = 0;

private int count = 15;

private PagedListViewDataAdapter mAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//1.find the listview

mListView = (ListView) findViewById(R.id.load_more_listview);

// 為listview的創建一個headerview,注意,如果不加會影響到加載的footview的顯示!

View headerMarginView = new View(this);

headerMarginView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LocalDisplay.dp2px(20)));

mListView.addHeaderView(headerMarginView);

//2.綁定模擬的數據

final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mockStrList);

mListView.setAdapter(adapter);

//3.設置下拉刷新組件和事件監聽

mPtrFrameLayout = (PtrFrameLayout) findViewById(R.id.load_more_list_view_ptr_frame);

mPtrFrameLayout.setLoadingMinTime(1000);

mPtrFrameLayout.setPtrHandler(new PtrHandler() {

@Override

public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {

// here check list view, not content.

return PtrDefaultHandler.checkContentCanBePulledDown(frame, mListView, header);

}

@Override

public void onRefreshBegin(PtrFrameLayout frame) {

//實現下拉刷新的功能

Log.i("test", "-----onRefreshBegin-----");

mPtrFrameLayout.postDelayed(new Runnable() {

@Override

public void run() {

mockStrList.clear();

start = 0;

mockStrList.addAll(getMockData(start, count));

mPtrFrameLayout.refreshComplete();

//第一個參數是:數據是否為空;第二個參數是:是否還有更多數據

mLoadMoreListViewContainer.loadMoreFinish(false, true);

adapter.notifyDataSetChanged();

}

}, 500);

}

});

//設置延時自動刷新數據

mPtrFrameLayout.postDelayed(new Runnable() {

@Override

public void run() {

mPtrFrameLayout.autoRefresh(false);

}

}, 200);

//4.加載更多的組件

mLoadMoreListViewContainer = (LoadMoreListViewContainer) findViewById(R.id.load_more_list_view_container);

mLoadMoreListViewContainer.setAutoLoadMore(true);//設置是否自動加載更多

mLoadMoreListViewContainer.useDefaultHeader();

//5.添加加載更多的事件監聽

mLoadMoreListViewContainer.setLoadMoreHandler(new LoadMoreHandler() {

@Override

public void onLoadMore(LoadMoreContainer loadMoreContainer) {

//模擬加載更多的業務處理

mLoadMoreListViewContainer.postDelayed(new Runnable() {

@Override

public void run() {

start++;

mockStrList.addAll(getMockData(start * 10, count));

if (start * 10 > 30) {

// mLoadMoreListViewContainer.loadMoreFinish(true, false);

//以下是加載失敗的情節

int errorCode = 0;

String errorMessage = "加載失敗,點擊加載更多";

mLoadMoreListViewContainer.loadMoreError(errorCode, errorMessage);

} else {

mLoadMoreListViewContainer.loadMoreFinish(false, true);

}

adapter.notifyDataSetChanged();

}

}, 1000);

}

});

}

/**

* 做一個簡單的內容數據

* @param start 開始位置

* @param count 每次拉取的數量

* @return

*/

private List getMockData(int start, int count) {

List slist = new ArrayList();

for (int i = start; i < start + count; i++) {

slist.add("內容編號:" + i);

}

return slist;

}

} 基本就這樣,還可以自己定義加載的ui.下次再寫個demo試試吧。

總結

以上是生活随笔為你收集整理的android-ultra-pull-to-refresh list,[Android]Ultra-Pull-To-Refresh之listview下拉刷新、上拉加载的用例...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。