Android Pull Torefresh-ListView使用詳細
8100 ワード
この間、ListViewを使っているうちに、Pull ToRefreshの使い方を発見しました.アップデートに使いやすいと思います.ここで共有します.参考にしてください.
Pull Torefresh方法はオープンソースのサードパーティプラグインとして使用されるため、使用手順は以下の通りである.
1、GitHubの上でソースコードと使用するカバンをダウンロードしました.住所はhttps://github.com/chrisbanes/Android-PullToRefreshを選択します.(これ以上詳細な導入説明はしない)
2、導入が完了したら、自分のxmlファイルの作成を開始できます.具体的なコードは以下の通りです.
注意:Pull Torefreshの属性を使うためには、名前空間が必要です.
Good luck
Write by Jimmy.li
Pull Torefresh方法はオープンソースのサードパーティプラグインとして使用されるため、使用手順は以下の通りである.
1、GitHubの上でソースコードと使用するカバンをダウンロードしました.住所はhttps://github.com/chrisbanes/Android-PullToRefreshを選択します.(これ以上詳細な導入説明はしない)
2、導入が完了したら、自分のxmlファイルの作成を開始できます.具体的なコードは以下の通りです.
注意:Pull Torefreshの属性を使うためには、名前空間が必要です.
xmlns:ptr = "http://schemas.android.com/apk/res-auto"
ptr:ptrMode="both"
この2行のコードは省略できません.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/bg"
tools:context=".MainActivity">
<com.handmark.pulltorefresh.library.PullToRefreshListView
xmlns:ptr = "http://schemas.android.com/apk/res-auto"
android:id="@+id/pull_refresh_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="1dp"
android:fadingEdge="none"
android:fastScrollEnabled="false"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:smoothScrollbar="true"
android:focusableInTouchMode="true"
android:focusable="true"
ptr:ptrMode="both"/>
</LinearLayout>
3、javaファイルを作成し、具体的なコードは以下の通りです.package pulltorefresh.pulltorefresh;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.util.Arrays;
import java.util.LinkedList;
/**
* PullToRefresh
* write by jimmy.li
* 2016/4/9 22:58
*/
public class MainActivity extends Activity {
private LinkedList<String> mListItems;
private PullToRefreshListView mPullRefreshListView;
private ArrayAdapter<String> mAdapter;
private int mDowmAddNum = 1;
private int mUpAddNum = 1;
// 5 listItem
private int mAddFalg = 5;
//
private String[] mStrings = {"Jimmy1", "Jimmy2", "Jimmy3", "Jimmy4", "Jimmy5",
"Jimmy6", "Jimmy7", "Jimmy8", "Jimmy9", "Jimmy10", "Jimmy11", "Jimmy12",
"Jimmy13", "Jimmy14", "Jimmy15", "Jimmy16", "Jimmy17", "Jimmy18", "Jimmy19",
"Jimmy20", "Jimmy21", "Jimmy22", "Jimmy23", "Jimmy24", "Jimmy25", "Jimmy26"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
initUI();
initData();
}
private void initData() {
/**
* OnRefreshListener2<ListView>
*/
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
//onPullDownToRefresh
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
Toast.makeText(MainActivity.this, "onPullDownToRefresh", Toast.LENGTH_SHORT).show();
for (int i = 1; i <= mAddFalg; i++) {
mListItems.addFirst("Added Later refresh..." + mDowmAddNum);
mDowmAddNum++;
}
new GetDataTask().execute();
}
//onPullUpToRefresh
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
Toast.makeText(MainActivity.this, "onPullUpToRefresh", Toast.LENGTH_SHORT).show();
for (int i = 1; i <= mAddFalg; i++) {
mListItems.addLast("Added after refresh..." + mUpAddNum);
mUpAddNum++;
}
new GetDataTask().execute();
}
});
//
ListView actualListView = mPullRefreshListView.getRefreshableView();
registerForContextMenu(actualListView);
mListItems = new LinkedList<String>();
mListItems.addAll(Arrays.asList(mStrings));
//
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems);
actualListView.setAdapter(mAdapter);
}
private void initUI() {
mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
}
//
//
private class GetDataTask extends AsyncTask<Void, Void, String[]> {
//
@Override
protected String[] doInBackground(Void... params) {
// Simulates a background job.
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
return mStrings;
}
// UI
@Override
protected void onPostExecute(String[] result) {
mAdapter.notifyDataSetChanged();
// Call onRefreshComplete when the list has been refreshed.
mPullRefreshListView.onRefreshComplete();
super.onPostExecute(result);
}
}
}
4、主要コード説明.private void initData() {
/**
* OnRefreshListener2<ListView>
*/
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
//onPullDownToRefresh
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
Toast.makeText(MainActivity.this, "onPullDownToRefresh", Toast.LENGTH_SHORT).show();
for (int i = 1; i <= mAddFalg; i++) {
mListItems.addFirst("Added Later refresh..." + mDowmAddNum);
mDowmAddNum++;
}
new GetDataTask().execute();
}
//onPullUpToRefresh
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
Toast.makeText(MainActivity.this, "onPullUpToRefresh", Toast.LENGTH_SHORT).show();
for (int i = 1; i <= mAddFalg; i++) {
mListItems.addLast("Added after refresh..." + mUpAddNum);
mUpAddNum++;
}
new GetDataTask().execute();
}
});
上は主にinitData()関数を利用してPullTorefresh上にドロップダウンしてリフレッシュする主要コードをパッケージ化し、それぞれそのドロップダウンとプルアップイベントモニターに対応しています.
//
ListView actualListView = mPullRefreshListView.getRefreshableView();
registerForContextMenu(actualListView);
mListItems = new LinkedList<String>();
mListItems.addAll(Arrays.asList(mStrings));
//
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems);
actualListView.setAdapter(mAdapter);
上のコードは主にListView空間を取得して登録し、アダプターを設置してListViewを表示します.Good luck
Write by Jimmy.li