我编写了一个测试示例:
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
时,不会调用onLayout
或layoutChildren
方法。
listview
可以无限滚动,必须重新使用剪贴簿视图并将其添加到底部。但是我不明白,您添加了一些视图,但是不需要重新布局吗?
如何显示剪贴簿视图?
答案 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