Android学習ノート——Android PullToRefresh(ListView,GridViewドロップダウン・リフレッシュ)使用紹介
今日暇があってPullToRefreshこのオープンソースコントロールの使用方法を学んで、機能はとても強くて、効果も悪くなくて、ListView、GirdView、ScrollViewなどの常用コントロールをカプセル化して、作者のGitHubアドレス:https://github.com/chrisbanes/Android-PullToRefresh
鴻洋先生のコントロールに関するブログも参考にしましたhttp://blog.csdn.net/lmj623565791/article/details/38238749あ、詳しく書いてあります.自分も勉強ノートにしておきましょう.
まずあの兄弟githubに行って彼のプロジェクトをダウンロードして、彼のlibraryを自分のプロジェクトに導入して、android studioの中でlibraryをどのように導入するかについて私も今日突然忘れました.のまだ慣れていないので、この手順をここに書いて、記憶をしっかりしたいと思っています.
1.プロジェクト用のlibraryを用意する
2.自分のプロジェクトの下でFile->New->Import Module
3.インポートするlibraryを選択し、インポート後にインポートしたmoduleの名前を変更し、finishをクリックします.
4.自分のappのbuild.gradleファイルに依存を追加
5.そして自分の工事で使えるようになりました
OK、PullToRefreshの関連libraryを導入した以上;それでは始めましょう
まずListView:
レイアウトファイル:
パッケージができたら直接使います.
次に、MainActivityのコードを見てみましょう.
コードの各部分は分かりやすいので、私も相応の注釈を加えて、余計なことは言いません.ここでは主に次の関数を説明します.
この関数の機能は,ユーザ定義制御がリフレッシュ時に行うことであり,demoではrefreshでListViewのデータを非同期で更新し,利用することを望んでいる.
この文は、リフレッシュプロンプト領域に現在のリフレッシュタイムスタンプを描画します.私たちはpullToRefreshListViewを見た.setOnRefreshListenerには2種類のパラメータがあります.1つは
の下のコールバック関数onRefresh()もう一つは
の下のコールバック関数onPullDownToRefresh()とonPullUpToRefreshBase()
どちらを呼び出すかは、ここに基づいています.
明らかにsetModeがBOTHの場合、次のものを呼び出してドロップダウンとプルアップの内容をそれぞれ設定します~~
ここでlistViewについてお話ししますが、GridViewは同じように実現しています.後で自分の小さなdemoをアップロードします.勉強しなければならないのは一緒にすることができます.
私も頑張っているシロです.一緒に頑張ってください.
Demoリンク:http://download.csdn.net/detail/dxdrush/9355629
鴻洋先生のコントロールに関するブログも参考にしましたhttp://blog.csdn.net/lmj623565791/article/details/38238749あ、詳しく書いてあります.自分も勉強ノートにしておきましょう.
まずあの兄弟githubに行って彼のプロジェクトをダウンロードして、彼のlibraryを自分のプロジェクトに導入して、android studioの中でlibraryをどのように導入するかについて私も今日突然忘れました.のまだ慣れていないので、この手順をここに書いて、記憶をしっかりしたいと思っています.
1.プロジェクト用のlibraryを用意する
2.自分のプロジェクトの下でFile->New->Import Module
3.インポートするlibraryを選択し、インポート後にインポートしたmoduleの名前を変更し、finishをクリックします.
4.自分のappのbuild.gradleファイルに依存を追加
5.そして自分の工事で使えるようになりました
OK、PullToRefreshの関連libraryを導入した以上;それでは始めましょう
まずListView:
レイアウトファイル:
パッケージができたら直接使います.
次に、MainActivityのコードを見てみましょう.
public class MainActivity extends AppCompatActivity {
private LinkedList mListItems;
private ArrayAdapter mAdapter;
private int mItemCount = 9;
private PullToRefreshListView pullToRefreshListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//girdView
//setContentView(R.layout.pulltorefresh_gridview_layout);
pullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
initData();
//ListView
mAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mListItems);
//GridView
//mAdapter = new ArrayAdapter(this,R.layout.gridview_item_layout,R.id.id_grid_item_text ,mListItems);
pullToRefreshListView.setAdapter(mAdapter);
//
pullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
//
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);
// ,
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
//
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.DISABLED);
//
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.MANUAL_REFRESH_ONLY);
ILoadingLayout startLabels = pullToRefreshListView.getLoadingLayoutProxy();
startLabels.setPullLabel("start");
startLabels.setRefreshingLabel("ing");
startLabels.setReleaseLabel("end");
// icon
startLabels.setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));
//
pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.
OnRefreshListener(){
@Override
public void onRefresh(PullToRefreshBase refreshView){
String label = DateUtils.formatDateTime(getApplicationContext(),
System.currentTimeMillis(),
DateUtils.FORMAT_SHOW_TIME|
DateUtils.FORMAT_SHOW_DATE|
DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
new GetDataTask().execute();
}
});
//
// pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.
// OnRefreshListener2() {
// @Override
// public void onPullDownToRefresh(PullToRefreshBaserefreshView){
//
// String label = DateUtils.formatDateTime(getApplicationContext(),
// System.currentTimeMillis(),
// DateUtils.FORMAT_SHOW_TIME|
// DateUtils.FORMAT_SHOW_DATE|
// DateUtils.FORMAT_ABBREV_ALL);
// refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
//
// new GetDataTask().execute();
// }
//
// @Override
// public void onPullUpToRefresh(PullToRefreshBase refreshView){
//
// new GetDataTask().execute();
// }
// });
}
private void initData(){
mListItems = new LinkedList();
for(int i = 0; i< mItemCount; i ++){
mListItems.add("" + i);
}
}
private class GetDataTask extends AsyncTask{
@Override
protected String doInBackground(Void... params) {
try{
Thread.sleep(2000);
}catch (InterruptedException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
mListItems.add("" + mItemCount++);
mAdapter.notifyDataSetChanged();
pullToRefreshListView.onRefreshComplete();
}
}
}
コードの各部分は分かりやすいので、私も相応の注釈を加えて、余計なことは言いません.ここでは主に次の関数を説明します.
pullToRefreshListView.setOnRefreshListener
この関数の機能は,ユーザ定義制御がリフレッシュ時に行うことであり,demoではrefreshでListViewのデータを非同期で更新し,利用することを望んでいる.
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
この文は、リフレッシュプロンプト領域に現在のリフレッシュタイムスタンプを描画します.私たちはpullToRefreshListViewを見た.setOnRefreshListenerには2種類のパラメータがあります.1つは
new PullToRefreshBase.OnRefreshListener()
の下のコールバック関数onRefresh()もう一つは
new PullToRefreshBase.OnRefreshListener2()
の下のコールバック関数onPullDownToRefresh()とonPullUpToRefreshBase()
どちらを呼び出すかは、ここに基づいています.
//
pullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
//
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);
// ,
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
//
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.DISABLED);
//
//pullToRefreshListView.setMode(PullToRefreshBase.Mode.MANUAL_REFRESH_ONLY);
明らかにsetModeがBOTHの場合、次のものを呼び出してドロップダウンとプルアップの内容をそれぞれ設定します~~
ここでlistViewについてお話ししますが、GridViewは同じように実現しています.後で自分の小さなdemoをアップロードします.勉強しなければならないのは一緒にすることができます.
私も頑張っているシロです.一緒に頑張ってください.
Demoリンク:http://download.csdn.net/detail/dxdrush/9355629