分页加载my

来源:互联网 发布:中兴软件开发技术面 编辑:程序博客网 时间:2024/06/06 05:38
import java.util.ArrayList;
import java.util.List;

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 {

    private ListView lv_main;
    private ProgressBar pb_main;
    private List<String> list;

    int index=0;
    int max=20;
    int progress=0;
    private ProgressDialog progressDialog;
    
    Handler handler=new Handler(){
        private ArrayAdapter<String> arrayAdapter;

        public void handleMessage(android.os.Message msg) {
            pb_main.setVisibility(View.GONE);
            progressDialog.dismiss();
            if(arrayAdapter==null){
                arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_expandable_list_item_1, android.R.id.text1, list);
                lv_main.setAdapter(arrayAdapter);
            }else{
                arrayAdapter.notifyDataSetChanged();
            }
        };
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        lv_main = (ListView) findViewById(R.id.lv_main);
        pb_main = (ProgressBar) findViewById(R.id.pb_main);
        
        list = new ArrayList<String>();
        //第一次进来加载数据
        loading();
        //监听listview
        listview_click();
    }

    //第一次进来加载数据
    private void loading() {
        progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setTitle("正在加载数据");
        progressDialog.show();
        
        //子线程加载数据
        new Thread(){
            public void run() {
                //给集合添加数据
                for (int i = index; i < index+max; i++) {
                    list.add("盟"+i);
                }
                //progressdialog进度条加载
                while(progress<100){
                    progress++;
                    progressDialog.setProgress(progress);
                    try {
                        sleep(10);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(progress==100){
                    //给handler发送message通知主线程处理UI更新操作
                    handler.sendEmptyMessage(0);
                    progress=0;
                }
            };
        }.start();
    }
    
    //监听listview
    private void listview_click() {
        // TODO Auto-generated method stub
        lv_main.setOnScrollListener(new OnScrollListener() {
            //滚动状态改变
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                // TODO Auto-generated method stub
                switch (scrollState) {
                //停止状态
                case OnScrollListener.SCROLL_STATE_IDLE:
                    //获取最后一个数值的position
                    int lastVisiblePosition = view.getLastVisiblePosition();
                    if(lastVisiblePosition==list.size()-1){
                        index=index+max;
                        pb_main.setVisibility(View.VISIBLE);
                        loading();
                    }
                    
                    break;

                default:
                    break;
                }
            }
            
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub
                if(firstVisibleItem==0){
                    list.clear();
                    index=0;
                    max=20;
                    pb_main.setVisibility(View.VISIBLE);
                    loading();
                }
            }
        });
    }


}

0 0
原创粉丝点击