Android實(shí)現(xiàn)滑動(dòng)加載數(shù)據(jù)的方法
本文實(shí)例講述了Android實(shí)現(xiàn)滑動(dòng)加載數(shù)據(jù)的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
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 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;
}
}
}
希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
- Android實(shí)現(xiàn)ListView分頁(yè)自動(dòng)加載數(shù)據(jù)的方法
- Android中ListView如何分頁(yè)加載數(shù)據(jù)
- Android實(shí)現(xiàn)ListView數(shù)據(jù)動(dòng)態(tài)加載的方法
- Android中如何加載數(shù)據(jù)緩存
- 解決Android ListView數(shù)據(jù)為空及加載錯(cuò)誤的方法
- Android應(yīng)用中ListView利用OnScrollListener分頁(yè)加載數(shù)據(jù)
- Android異步加載數(shù)據(jù)和圖片的保存思路詳解
- Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫
相關(guān)文章
android中在Activity中響應(yīng)ListView內(nèi)部按鈕的點(diǎn)擊事件的兩種方法
本篇文章主要介紹了android中在Activity中響應(yīng)ListView內(nèi)部按鈕的點(diǎn)擊事件的兩種方法,有需要的可以了解一下。2016-11-11
Android RecyclerView實(shí)現(xiàn)數(shù)據(jù)列表展示效果
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView實(shí)現(xiàn)數(shù)據(jù)列表展示效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Android基于widget組件實(shí)現(xiàn)物體移動(dòng)/控件拖動(dòng)功能示例
這篇文章主要介紹了Android基于widget組件實(shí)現(xiàn)物體移動(dòng)/控件拖動(dòng)功能,結(jié)合實(shí)例形式分析了widget組件在桌面應(yīng)用中的事件響應(yīng)與屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-10-10
Android利用listview控件操作SQLite數(shù)據(jù)庫(kù)實(shí)例
我們利用SQLiteOpenHelper類建立一個(gè)數(shù)據(jù)庫(kù),并寫好增、刪、查等方法,通過(guò)SimpleCursorAdapter連接listview實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增加、查詢以及長(zhǎng)按刪除的功能。2017-04-04
Android Studio新建工程默認(rèn)在build.gradle中加入maven阿里源的問(wèn)題
這篇文章主要介紹了Android Studio新建工程默認(rèn)在build.gradle中加入maven阿里源的問(wèn)題,本文通過(guò)實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
android查看網(wǎng)絡(luò)圖片的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了android查看網(wǎng)絡(luò)圖片的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Android實(shí)現(xiàn)繪制LocationMarkerView圖的示例代碼
LocationMarker是運(yùn)動(dòng)軌跡上Start、End, 以及整公里點(diǎn)上筆者自定義繪制的一個(gè)MarkerView。這篇文章主要介紹了Android實(shí)現(xiàn)繪制LocationMarkerView圖的示例代碼,希望對(duì)大家有所幫助2023-02-02
Android 中使用 ViewPager實(shí)現(xiàn)屏幕頁(yè)面切換和頁(yè)面輪播效果
ViewPager是谷歌官方給我們提供的一個(gè)兼容低版本安卓設(shè)備的軟件包,里面包囊了只有在安卓3.0以上可以使用的api。下面我們就展示下ViewPager可以實(shí)現(xiàn)的兩種簡(jiǎn)單效果,感興趣的朋友一起看看吧2016-12-12

