ListView中的限定项目

时间:2012-05-29 07:31:24

标签: android android-layout

我的项目中有一个问题是:

- 我有一个包含1000多个项目的listView。我不希望我的listView一次加载所有1000个项目。我只想在屏幕上显示10个项目,并在列表底部显示“更多”。当我点击“更多”时,它会在我的listView中添加更多10个项目,而我的listView将有20个项目。它可以滚动,“更多”按钮仍然存在,直到我的列表中包含所有1000个项目。

有没有人有建议或代码示例?

在此先感谢,任何帮助都表示赞赏。

3 个答案:

答案 0 :(得分:3)

首先 - 如果您不希望所有1000个项目都加载的原因是您认为它使UI“很重”,因为它包含1000个视图,那么您错了。列表视图有一个机械,它只在内存中保存可以看到的项目。当列表适配器的getView()方法的实现正确地重用convert视图参数时,它工作得最好。

如果不是原因 - 那么你可以通过实现适配器在每个模块10位置返回来实现它 - 一个实现onClick监听器的按钮,它将项添加到逻辑数据,然后调用notifyDataSetChanged()来刷新UI适当地对新数据

答案 1 :(得分:0)

如果您使用的是网络服务。尝试创建一个存储过程,您可以使用它来提供项目数量。每次按下按钮更多。存储过程将检索以前的数据+ 10多个数据项?这可能是一个选择

答案 2 :(得分:0)

经过一个小时的研究,我解决了我的问题:

- 我实现setOnScrollListener以获取我的ListView的lastIndex

- 创建一个线程,使用lastIndex将数据更新为adapter并添加10个项目。

以下是说明

 gtumcaDynamicListView.setOnScrollListener(new OnScrollListener() {

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        // what is the bottom iten that is visible
        int lastInScreen = firstVisibleItem + visibleItemCount;
        if((lastInScreen == totalItemCount) && !(loadingMore)) {
            //Run background thread
            Thread tt = new loadBackgroung(lastInScreen, adaptor);
            tt.start();
        }
    }
});


class loadBackgroung extends Thread{
public int lastIndex;
public MyCustomAdaptor adaptor;


public loadBackgroung(int lastIndex, MyCustomAdaptor adaptor) {
    super();
    this.lastIndex = lastIndex;
    this.adaptor = adaptor;
}

@Override
public void run() {


    handler.post(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            for(int i = 0;i<10;i++){
                gtuMcaBean.add(new GtuMcaBean((lastIndex + i)+" First", (lastIndex + i)+" Last", (lastIndex + i)+" Birthdate"));
            }
            adaptor.notifyDataSetChanged();
        }
    });
    loadingMore = false;

}

完整代码:http://code.google.com/p/dynamic-listview/source/checkout