Welcome

首页 / 移动开发 / Android / Android实现滑动加载数据的方法

本文实例讲述了Android实现滑动加载数据的方法。分享给大家供大家参考。具体实现方法如下:
EndLessActivity.java如下:
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 amountadapter.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(){@Overridepublic 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;} }}
希望本文所述对大家的Android程序设计有所帮助。