Android实现滑动加载数据的方法
本文实例讲述了Android实现滑动加载数据的方法。分享给大家供大家参考。具体实现方法如下:
EndLessActivity.java如下:
packagecom.ScrollListView; importAndroid.app.ListActivity; importAndroid.os.Bundle; importAndroid.view.Gravity; importAndroid.view.View; importAndroid.view.ViewGroup; importAndroid.widget.AbsListView; importAndroid.widget.BaseAdapter; importAndroid.widget.LinearLayout; importAndroid.widget.ProgressBar; importAndroid.widget.TextView; importAndroid.widget.AbsListView.OnScrollListener; publicclassEndLessActivityextendsListActivityimplementsOnScrollListener{ Aleph0adapter=newAleph0(); intmProgressStatus=0; ProgressBarprogressBar; protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); LinearLayoutsearchLayout=newLinearLayout(this); searchLayout.setOrientation(LinearLayout.HORIZONTAL); progressBar=newProgressBar(this); progressBar.setPadding(0,0,15,0); searchLayout.addView(progressBar,newLinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT )); TextViewtextView=newTextView(this); textView.setText("加载中..."); textView.setGravity(Gravity.CENTER_VERTICAL); searchLayout.addView(textView,newLinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT )); searchLayout.setGravity(Gravity.CENTER); LinearLayoutloadingLayout=newLinearLayout(this); loadingLayout.addView(searchLayout,newLinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT )); loadingLayout.setGravity(Gravity.CENTER); getListView().addFooterView(loadingLayout); setListAdapter(adapter); getListView().setOnScrollListener(this); } publicvoidonScroll(AbsListViewview, intfirstVisible,intvisibleCount,inttotalCount){ booleanloadMore=/*maybeaddapadding*/ firstVisible+visibleCount>=totalCount; if(loadMore){ adapter.count+=visibleCount;//oranyotheramount adapter.notifyDataSetChanged(); } } publicvoidonScrollStateChanged(AbsListViewv,ints){} classAleph0extendsBaseAdapter{ intcount=40;/*startingamount*/ publicintgetCount(){returncount;} publicObjectgetItem(intpos){returnpos;} publiclonggetItemId(intpos){returnpos;} publicViewgetView(intpos,Viewv,ViewGroupp){ TextViewview=newTextView(EndLessActivity.this); view.setText("entry"+pos); returnview; } } }
listview下部是按钮控制:
packagecom.ScrollListView; importAndroid.app.ListActivity; importAndroid.os.Bundle; importAndroid.view.Gravity; importAndroid.view.View; importAndroid.view.ViewGroup; importAndroid.widget.AbsListView; importAndroid.widget.BaseAdapter; importAndroid.widget.Button; importAndroid.widget.LinearLayout; importAndroid.widget.ProgressBar; importAndroid.widget.TextView; importAndroid.widget.AbsListView.OnScrollListener; publicclassEndLessActivityextendsListActivity{ Aleph0adapter=newAleph0(); intmProgressStatus=0; protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); LinearLayoutsearchLayout=newLinearLayout(this); searchLayout.setOrientation(LinearLayout.HORIZONTAL); ButtontextView=newButton(this); textView.setText("加载中..."); textView.setGravity(Gravity.CENTER_VERTICAL); searchLayout.addView(textView,newLinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT )); searchLayout.setGravity(Gravity.CENTER); LinearLayoutloadingLayout=newLinearLayout(this); loadingLayout.addView(searchLayout,newLinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT )); loadingLayout.setGravity(Gravity.CENTER); getListView().addFooterView(loadingLayout); textView.setOnClickListener(newButton.OnClickListener() {@Override publicvoidonClick(Viewv) { adapter.count+=10; adapter.notifyDataSetChanged(); } }); setListAdapter(adapter); //getListView().setOnScrollListener(this); } /*publicvoidonScroll(AbsListViewview, intfirstVisible,intvisibleCount,inttotalCount){ booleanloadMore= firstVisible+visibleCount>=totalCount; if(loadMore){ adapter.count+=visibleCount; adapter.notifyDataSetChanged(); } }*/ publicvoidonScrollStateChanged(AbsListViewv,ints){} classAleph0extendsBaseAdapter{ intcount=40;/*startingamount*/ publicintgetCount(){returncount;} publicObjectgetItem(intpos){returnpos;} publiclonggetItemId(intpos){returnpos;} publicViewgetView(intpos,Viewv,ViewGroupp){ TextViewview=newTextView(EndLessActivity.this); view.setText("entry"+pos); returnview; } } }
希望本文所述对大家的Android程序设计有所帮助。