Android ListViewでより多くのドロップダウン・リフレッシュ機能を搭載(pull-to-refreshを採用)

9007 ワード

Androidはアップロード機能とドロップダウンリフレッシュ機能を実現し、
現在比較的人気のあるPullToRefreshを採用し、現在比較的良いドロップダウンリフレッシュを実現しているクラスライブラリです.
現在、彼がサポートしているコントロールは、ListView、ExpandableListView、GridView、WebViewなどです.
ダウンロード先:https://github.com/chrisbanes/Android-PullToRefresh
まず最初のステップはもちろんlibriayを私たちのプロジェクトに導入します.具体的な導入方法は、ここでは説明しません.
以下の例はListViewを採用していますが、もちろん残りはこれと似ています.
1、レイアウトファイルactivity_main.xml
  01 < RelativeLayout   xmlns:android = "http://schemas.android.com/apk/res/android" 02      xmlns:tools = "http://schemas.android.com/tools" 03      android:layout_width = "match_parent" 04      android:layout_height = "match_parent" 05      tools:context = ".MainActivity"   > 06
  07        < com.handmark.pulltorefresh.library.PullToRefreshListView 08          android:id = "@+id/pull_refresh_list" 09          android:layout_width = "fill_parent" 10          android:layout_height = "fill_parent"   /> 11 </ RelativeLayout >
2、ドロップダウン・リフレッシュの機能を実現するのは簡単で、OnRefreshListenerのOnRefreshメソッドを実現するだけでよい.ここでは,上引きと下引きがそれぞれ異なる操作を実行する方法について述べる.
 
ここで参考にしましたhttp://blog.csdn.net/ueryueryuery/article/details/17440465
原理は、ドロップダウンとプルアップで表示されるレイアウトの可視状態クラスに基づいて、プルアップとプルダウンを区別し、対応する操作を実行することです.
PullToRefreshのクラスライブラリのcom.handmark.pulltorefresh.libraryバッグの下でPullToRefreshBaseを開きます.JAva、このクラスの一番後ろに次のコードを追加します.
  1 public   boolean   isHeaderShown() { 2      return   getHeaderLayout().isShown(); 3 } 4
  5 public   boolean   isFooterShown() { 6      return   getFooterLayout().isShown(); 7 }
3、Activityでのコードは以下の通りです.
 
  01 public   class   MainActivity  extends   ListActivity { 02
  03      private   PullToRefreshListView mPullToRefreshListView; 04        05      private   LinkedList<String> mItemList; 06      private   ArrayAdapter<String> adapter; 07        08      private   Context context; 09      @Override 10      protected   void   onCreate(Bundle savedInstanceState) { 11          super .onCreate(savedInstanceState); 12          setContentView(R.layout.activity_main); 13          context =  this ; 14          initData(); 15            16          adapter =  new   ArrayAdapter<String>( this , android.R.layout.simple_list_item_1, mItemList); 17            18          // 19          mPullToRefreshListView = (PullToRefreshListView)findViewById(R.id.pull_refresh_list); 20          ListView mListView = mPullToRefreshListView.getRefreshableView(); 21          mListView.setAdapter(adapter); 22            23          // pull-to-refresh Mode.Both 24          mPullToRefreshListView.setMode(Mode.BOTH); 25            26          // 27          mPullToRefreshListView.setOnRefreshListener( new   OnRefreshListener<ListView>() { 28
  29              @Override 30              public   void   onRefresh(PullToRefreshBase<ListView> refreshView) { 31                    32                  if   (refreshView.isHeaderShown()){ 33                      Toast.makeText(context,  " " ,Toast.LENGTH_SHORT).show(); 34                      // 35                  } else   { 36                      Toast.makeText(context,  " " ,Toast.LENGTH_SHORT).show(); 37                      // 38                  } 39                    40              } 41          }); 42            43      } 44
  45
  46      private   void   initData(){ 47          // 48          mItemList =  new   LinkedList<String>(); 49          mItemList.addAll(Arrays.asList(data)); 50            51      } 52        53      private   String[] data  =  new   String[]{ "data1" , "data2" , "data3" , "data4" , "data5" , "data6" , 54              "data1" , "data2" , "data3" , "data4" , "data5" , "data6" }; 55 }
上記のコードに示すように、OnRefreshの実装コードでは、プルアップまたはドロップダウンを区別するために使用され、キーコードは以下の通りです.
  1 if   (refreshView.isHeaderShown()){ 2                      Toast.makeText(context,  " " ,Toast.LENGTH_SHORT).show(); 3                      // 4                  } else   { 5                      Toast.makeText(context,  " " ,Toast.LENGTH_SHORT).show(); 6                      // 7                  }
これで、プロジェクトを実行すると、プレゼンテーションの結果が得られます.
 
原文住所:http://www.dutycode.com/post-13.html
私のブログ:http://www.dutycode.com
 
 
参考サイト:http://blog.csdn.net/ueryueryuery/article/details/17440465