Android 滑动加载数据


package  com.ScrollListView;

import  Android.app.ListActivity;
import  android.os.Bundle;
import  android.view.Gravity;
import  android.view.View;
import  android.view.ViewGroup;
import  android.widget.AbsListView;
import  android.widget.BaseAdapter;
import  android.widget.LinearLayout;
import  android.widget.ProgressBar;
import  android.widget.TextView;
import  android.widget.AbsListView.OnScrollListener;

public   class  EndLessActivity  extends  ListActivity  implements  OnScrollListener  {
      
    Aleph0 adapter  =   new  Aleph0();
     int  mProgressStatus  =   0 ;
    ProgressBar progressBar;
     protected   void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
        LinearLayout searchLayout  =   new  LinearLayout( this );
        searchLayout.setOrientation(LinearLayout.HORIZONTAL);
              progressBar  =   new  ProgressBar( this );
              progressBar.setPadding( 0 ,  0 ,  15 ,  0 );
              searchLayout.addView(progressBar, new  LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
              ));
              TextView textView  =   new  TextView( this );
              textView.setText( " 加载中... " );
              textView.setGravity(Gravity.CENTER_VERTICAL);
              searchLayout.addView(textView, new  LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT
              ));
              searchLayout.setGravity(Gravity.CENTER);
              LinearLayout loadingLayout  =   new  LinearLayout( this );
              loadingLayout.addView(searchLayout, new  LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
              ));
              loadingLayout.setGravity(Gravity.CENTER);
             getListView().addFooterView(loadingLayout);

        setListAdapter(adapter); 
        getListView().setOnScrollListener( this );
    }
 
     public   void  onScroll(AbsListView view,
         int  firstVisible,  int  visibleCount,  int  totalCount) {
 
         boolean  loadMore  =   /*  maybe add a padding  */ 
            firstVisible  +  visibleCount  >=  totalCount;
 
         if (loadMore) {
            adapter.count  +=  visibleCount;  //  or any other amount 
            adapter.notifyDataSetChanged();
        }
    }
 
     public   void  onScrollStateChanged(AbsListView v,  int  s) { }    
 
     class  Aleph0  extends  BaseAdapter {
         int  count  =   40 ;  /*  starting amount  */ 
 
         public   int  getCount() {  return  count; }
         public  Object getItem( int  pos) {  return  pos; }
         public   long  getItemId( int  pos) {  return  pos; }
 
         public  View getView( int  pos, View v, ViewGroup p) {
                TextView view  =   new  TextView(EndLessActivity. this );
                view.setText( " entry  "   +  pos);
                 return  view;
        }
    }

 

}

listview下部是按钮控制:

package  com.ScrollListView;

import  android.app.ListActivity;
import  android.os.Bundle;
import  android.view.Gravity;
import  android.view.View;
import  android.view.ViewGroup;
import  android.widget.AbsListView;
import  android.widget.BaseAdapter;
import  android.widget.Button;
import  android.widget.LinearLayout;
import  android.widget.ProgressBar;
import  android.widget.TextView;
import  android.widget.AbsListView.OnScrollListener;

public   class  EndLessActivity  extends  ListActivity   {
      
    Aleph0 adapter  =   new  Aleph0();
     int  mProgressStatus  =   0 ;
   
     protected   void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
        LinearLayout searchLayout  =   new  LinearLayout( this );
        searchLayout.setOrientation(LinearLayout.HORIZONTAL);
            
              Button textView  =   new  Button( this );
              textView.setText( " 加载中... " );
              textView.setGravity(Gravity.CENTER_VERTICAL);
              searchLayout.addView(textView, new  LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT
              ));
              searchLayout.setGravity(Gravity.CENTER);
              LinearLayout loadingLayout  =   new  LinearLayout( this );
              loadingLayout.addView(searchLayout, new  LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
              ));
              loadingLayout.setGravity(Gravity.CENTER);
             getListView().addFooterView(loadingLayout);
             textView.setOnClickListener( new  Button.OnClickListener()  
             {        @Override     
                  public   void  onClick(View v) 
             {        
                 adapter.count  +=   10 ; 
                 adapter.notifyDataSetChanged();
                 }     
             }); 
            
            
        setListAdapter(adapter); 
         // getListView().setOnScrollListener(this); 
    }
 
   /* public void onScroll(AbsListView view,
        int firstVisible, int visibleCount, int totalCount) {
 
        boolean loadMore = 
            firstVisible + visibleCount >= totalCount;
 
        if(loadMore) {
            adapter.count += visibleCount; 
            adapter.notifyDataSetChanged();
        }
    }  */
 
     public   void  onScrollStateChanged(AbsListView v,  int  s) { }    
 
     class  Aleph0  extends  BaseAdapter {
         int  count  =   40 ;  /*  starting amount  */ 
 
         public   int  getCount() {  return  count; }
         public  Object getItem( int  pos) {  return  pos; }
         public   long  getItemId( int  pos) {  return  pos; }
 
         public  View getView( int  pos, View v, ViewGroup p) {
                TextView view  =   new  TextView(EndLessActivity. this );
                view.setText( " entry  "   +  pos);
                 return  view;
        }
    }
}

相关内容