ListView向下滚动,在底部添加废料视图,但是不需要重新布局?

时间:2018-08-31 07:55:10

标签: android

我编写了一个测试示例:

public class MyListView extends ListView {
    public MyListView(Context context) {
        super(context);
    }

    public MyListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        Log.e(TAG, "onLayout: MyListView");
    }

    @Override
    protected void layoutChildren() {
        super.layoutChildren();
        Log.e(TAG, "layoutChildren: MyListView");
    }
}

当我向下滚动listview时,不会调用onLayoutlayoutChildren方法。

listview可以无限滚动,必须重新使用剪贴簿视图并将其添加到底部。但是我不明白,您添加了一些视图,但是不需要重新布局吗?

如何显示剪贴簿视图?

1 个答案:

答案 0 :(得分:0)

首先,您可能不应该使用自定义ListView。重复使用scrapview已在ListView中实现。

第二种实现无限列表的方法是,在BaseAdapter.getCount()中返回几乎无限大的数字,使ListView欺骗无限个项目。并在BaseAdapter.getView()中使用适当的项目数据进行查看。

也许是这样吗?

val list = ArrayList<Data>()    // a list with some data
val adapter = object : BaseAdapter() {
    override fun getView(position: Int, view: View?, viewGroup: ViewGroup?): View {
        val item = getItem(position)
        // make view with item data
    }

    override fun getItem(position: Int): Any {
        return list[position % list.size]
    }

    override fun getItemId(position: Int): Long {
    }

    override fun getCount(): Int {
        return Int.MAX_VALUE
    }
}
...
listView.adapter = adapter