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程序设计有所帮助。