分页加载Demo

来源:互联网 发布:淘宝旗舰店和京东自营 编辑:程序博客网 时间:2024/06/10 02:01

activity_main.xml 设置

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ListView        android:id="@+id/listView"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:divider="@null" />    <ProgressBar        android:id="@+id/pb"        android:visibility="gone"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center" /></LinearLayout>

MainActivity主入口

package com.example.pagedemo;import java.util.ArrayList;import android.app.Activity;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.ProgressBar;public class MainActivity extends Activity {    protected static final String TAG = "MainActivity";    private ListView listView;    private ArrayList<String> strList;    private ArrayAdapter<String> arrayAdapter;    private ProgressDialog dialog;    Handler handler = new Handler() {        public void handleMessage(android.os.Message msg) {            // 让进度条消失            pb.setVisibility(View.GONE);            dialog.dismiss();            if (arrayAdapter == null) {                arrayAdapter = new ArrayAdapter<String>(MainActivity.this,                        android.R.layout.simple_list_item_1,                        android.R.id.text1, strList);                listView.setAdapter(arrayAdapter);            } else {                arrayAdapter.notifyDataSetChanged();            }        };    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listView);        pb = (ProgressBar) findViewById(R.id.pb);        // 创建集合,添加数据        strList = new ArrayList<String>();        loadData();        listView.setOnScrollListener(new OnScrollListener() {            @Override            public void onScrollStateChanged(AbsListView view, int scrollState) {                switch (scrollState) {                // 停止的状态                case OnScrollListener.SCROLL_STATE_IDLE:                    // Log.i(TAG, "idle........");                    // 获取最后一个条目的索引值                    int lastVisiblePosition = view.getLastVisiblePosition();                    // 等于集合长度减一                    if (lastVisiblePosition == strList.size() - 1) {                        // 加载数组                        // 改变index的值                        index = index + Max;                        // 显示                        pb.setVisibility(View.VISIBLE);                        loadData();                    }                    break;                // 惯性滑动                case OnScrollListener.SCROLL_STATE_FLING:                    // Log.i(TAG, "fling........");                    break;                // 滑动的状态                case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:                    // Log.i(TAG, "scroll.......");                    break;                default:                    break;                }            }            @Override            public void onScroll(AbsListView view, int firstVisibleItem,                    int visibleItemCount, int totalItemCount) {                // Log.i(TAG, "firstVisibleItem" + firstVisibleItem                // + "visibleItemCount" + visibleItemCount                // + "totalItemCount" + totalItemCount);            }        });    }    int Max = 30;    int index = 0;    private ProgressBar pb;    int progress = 0;    private void loadData() {        dialog = new ProgressDialog(MainActivity.this);        dialog.setTitle("正在加载数据...");        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        dialog.show();        new Thread() {            public void run() {                for (int i = index; i < index + Max; i++) {                    strList.add("我是第" + i + "个条目");                }                while (progress < 100) {                    progress++;                    dialog.setProgress(progress);                    try {                        sleep(10);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }                if (progress == 100) {                    handler.sendEmptyMessage(0);                    progress=0;                }            };        }.start();    }}
0 0
原创粉丝点击