Android ListView 滚动加载数据

 预览

 

2. 代码

view plaincopy to clipboardprint?
01.package android.test;  
02.import java.util.ArrayList;  
03.import android.app.Activity;  
04.import android.app.ProgressDialog;  
05.import android.os.Bundle;  
06.import android.os.Handler;  
07.import android.os.Message;  
08.import android.widget.AbsListView;  
09.import android.widget.ArrayAdapter;  
10.import android.widget.ListView;  
11.import android.widget.AbsListView.OnScrollListener;  
12.public class Main extends Activity implements Runnable {  
13.    private ListView m_listView;  
14.    private ArrayList<String> m_data = new ArrayList<String>();  
15.    private ArrayAdapter<String> m_adapter;  
16.    private ProgressDialog m_progressDlg;  
17.      
18.    private int m_nLastItem = 0;  
19.    private Handler m_handler = new Handler() {  
20.        @Override 
21.        public void handleMessage(Message msg) {  
22.            m_progressDlg.dismiss();  
23.            for (int i = m_listView.getCount(); i < m_listView.getCount() + 10; ++i) {  
24.                m_data.add("test__" + i);  
25.            }  
26.            m_adapter.notifyDataSetChanged();  
27.            m_listView.setSelection(m_nLastItem - 1);  
28.        }  
29.    };  
30.    /** Called when the activity is first created. */ 
31.    @Override 
32.    public void onCreate(Bundle savedInstanceState) {  
33.        super.onCreate(savedInstanceState);  
34.        setContentView(R.layout.main);  
35.        m_listView = (ListView) findViewById(R.id.listView1);  
36.        for (int i = 0; i < 10; ++i) {  
37.            m_data.add("test__" + i);  
38.        }  
39.        m_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, m_data);  
40.        m_listView.setAdapter(m_adapter);  
41.        m_listView.setOnScrollListener(new OnScrollListener() {  
42.            @Override 
43.            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {  
44.                m_nLastItem = firstVisibleItem + visibleItemCount;  
45.            }  
46.            @Override 
47.            public void onScrollStateChanged(AbsListView view, int scrollState) {  
48.                if (m_nLastItem == m_adapter.getCount() && scrollState == OnScrollListener.SCROLL_STATE_IDLE) {  
49.                    LoadRemainingItems();  
50.                }  
51.            }  
52.        });  
53.    }  
54.    private void LoadRemainingItems() {  
55.        m_progressDlg = ProgressDialog.show(Main.this, "信息", "正在加载数据...", true);  
56.        Thread t = new Thread(Main.this);  
57.        t.start();  
58.    }  
59.    @Override 
60.    public void run() {  
61.        try {  
62.            Thread.sleep(3000);  
63.            m_handler.sendEmptyMessage(0);  
64.        } catch (InterruptedException e) {  
65.            e.printStackTrace();  
66.        }  
67.    }  
68.} 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ilysony/archive/2011/03/18/6259828.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值