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
Android学习笔记——Android PullToRefresh (ListView,GridView 下拉刷新) 使用介绍_第1张图片
3.インポートするlibraryを選択し、インポート後にインポートしたmoduleの名前を変更し、finishをクリックします.
Android学习笔记——Android PullToRefresh (ListView,GridView 下拉刷新) 使用介绍_第2张图片
4.自分のappのbuild.gradleファイルに依存を追加
Android学习笔记——Android PullToRefresh (ListView,GridView 下拉刷新) 使用介绍_第3张图片
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の場合、次のものを呼び出してドロップダウンとプルアップの内容をそれぞれ設定します~~
Android学习笔记——Android PullToRefresh (ListView,GridView 下拉刷新) 使用介绍_第4张图片
ここでlistViewについてお話ししますが、GridViewは同じように実現しています.後で自分の小さなdemoをアップロードします.勉強しなければならないのは一緒にすることができます.
私も頑張っているシロです.一緒に頑張ってください.
Demoリンク:http://download.csdn.net/detail/dxdrush/9355629