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();
}
}
});
}
}
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();
}
}
});
}
}