編輯:關於Android編程
直接上代碼。
其實主要就是通過繼承 OnScrollListener 這個接口 在 onScrollStateChanged 這個方法裡面 判斷listview是否到最後1條。
然後加載數據,下面部分代碼。
public class MainActivity extends Activity implements OnScrollListener {
private ArrayAdapter adapter;
private ListView listView;
private TextView loadText;
private ProgressBar pg;
private List list;
// ListView底部View
private View moreView;
private Handler handler = new Handler();
private int MaxNum = 22;// 設置一個最大的數據條數,超過即不再加載
// 最後可見條目的索引
private int lastVisibleIndex;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.ll);
moreView = getLayoutInflater().inflate(R.layout.moredata, null);
loadText = (TextView) moreView.findViewById(R.id.bt_load);
pg = (ProgressBar) moreView.findViewById(R.id.pg);
listView.addFooterView(moreView);
// 用map來裝載數據,初始化10條數據
list = new ArrayList();
// 實例化SimpleAdapter
adapter= new ArrayAdapter(this, R.layout.item, R.id.tv_title, list);
listView.setAdapter(adapter);
listView.setOnScrollListener(this);
loadDate();
/** 手動加載 **/
// loadText.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// pg.setVisibility(View.VISIBLE);// 將進度條可見
// loadText.setVisibility(View.GONE);// 按鈕不可見
// handler.postDelayed(new Runnable() {
// @Override
// public void run() {
// loadDate();
// loadText.setVisibility(View.VISIBLE);
// pg.setVisibility(View.GONE);
// adapter.notifyDataSetChanged();// 通知listView刷新數據
// }
// }, 2000);
// }
// });
}
/** 說明一下
* onScroll 是滑動後觸發的
* onScrollStateChanged 是拖著滑動觸發
* */
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 計算最後可見條目的索引
lastVisibleIndex = firstVisibleItem + visibleItemCount - 1;
// 所有的條目已經和最大條數相等,則移除底部的View
if (totalItemCount == MaxNum + 1) {
listView.removeFooterView(moreView);
Toast.makeText(this, "數據全部加載完成", Toast.LENGTH_LONG).show();
}
}
//滑動的時候判斷是否已經到了底部。
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
//OnScrollListener.SCROLL_STATE_TOUCH_SCROLL
//OnScrollListener.SCROLL_STATE_FLING
//OnScrollListener.SCROLL_STATE_IDLE
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
&& lastVisibleIndex == adapter.getCount()) {
// 當滑到底部時自動加載
pg.setVisibility(View.VISIBLE);
loadText.setVisibility(View.GONE);
handler.postDelayed(new Runnable() {
@Override
public void run() {
loadDate();
loadText.setVisibility(View.VISIBLE);
pg.setVisibility(View.GONE);
adapter.notifyDataSetChanged();
}
}, 2000);
}
}
//這裡加載數據
private void loadDate(){
int count = adapter.getCount();
// if (count + 5 < MaxNum) {
// for (int i = count; i < count + 5; i++) {
// list.add("新增第" + i + "行");
// }
// } else {
// for (int i = count; i < MaxNum; i++) {
// list.add("新增第" + i + "行");
// }
// }
//一次加載10條
for (int i = count; i < count + 20; i++) {
list.add("新增第" + i + "行");
}
}
} 1. 上面那個簡單的 上拉加載更多的例子
http://download.csdn.net/detail/kongbaidepao/6884945
2. 網上的一個 上拉加載更多 下拉刷新的例子
http://download.csdn.net/detail/kongbaidepao/6884933
3. 還有1個挺完善的 listview scrollview gridview 加載更多的例子
http://download.csdn.net/detail/kongbaidepao/6884999
另外附一個開源項目,有興趣的可以去看看呢。
https://github.com/chrisbanes/Android-PullToRefresh
Android實戰——第三方服務之Bmob後端雲的雲應用收納集小項目(五)
項目意義:對於2016年Google I/O大會上提出的Instant Apps,即用戶不需下載app,就可以運行app的這個新鮮的理念聰明你的可能會聯想到H5App,w
android學習九(android的廣播)
在這裡 篇文章裡面我將總結廣播接收器(Broadcast Receiver)方面的知識。首先我們來了解下andorid中廣播的類型,android中的廣播
Android照片牆應用實現
照片牆這種功能現在應該算是挺常見了,在很多應用中你都可以經常看到照片牆的身影。它的設計思路其實也非常簡單,用一個GridView控件當作“牆”,然
我是如何從零開始自學Android到一萬月薪的
本篇文章致那些從零開始學 Android 的或者正要學習還沒有勇氣出發的人, 希望通過我的經歷能夠讓你在學習的道路中堅持下來。我的第一份工作畢業之際通過學校的校招找到了一