0

因此,我正在编写无尽适配器的 hacky 版本,但我想检查是否可以在特定位置或计数之后停止加载数据,即使我已经向其传递了大量数据列表。

我的意思是这样的:

public View getView(final int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (position(count) < 25)
               {
                       load data into the layout.
        }
           return convertView;
}

目前,如果我尝试这样的事情,我会得到一个空指针异常。

4

1 回答 1

1

您可能需要在getCount()中指定要显示的视图数量,并在您希望显示更多视图时增加它。像这样的东西可能会起作用(注意:我还没有测试过)

private class MyAdapter extends BaseAdapter {
    private int currentMax;
    private ArrayList<MyType> items;

    public MyAdapter(int max, ArrayList<MyType> items){
        currentMax = max;
        this.items = items;
    }

    public void showMore(int howMany){
        currentMax += howMany;
    }

    @Override
    public int getCount(){
        return currentMax;
    }

    /* snip (getview etc.) */
}

然后使用和增加

MyAdapter adapter = new MyAdapter(25, items);
getListView().setAdapter(adapter);

/* you now want to show more */

// Increase limit
adapter.showMore(10);
// Let the adapter know something's chagned
adapter.notifyDataSetChanged();
于 2012-09-18T17:51:58.183 回答