我在 SOF 中阅读了许多关于 CursorAdaptor - newView / getView / bindView 的帖子。
如果我为 AutoComplete Text Field 创建一个自定义适配器,我必须实现 newView() 和 bindView()。
但是有人说,实现getView()可以提高滚动时的速度。
所以问题是,
如果在 newView() 上,已经膨胀了一个视图。
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final LayoutInflater inflater = LayoutInflater.from(context);
// =Single Line=
final TextView view = (TextView) inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
String item = createItem(cursor);
view.setText(item);
return view;
}
Run Code Online (Sandbox Code Playgroud)
那么在 getView() 上,我会做同样的事情吗?
实施getView()或newView()/bindView()组在性能方面是一回事,您应该选择后面的选项。对于Cursor基于适配器的getView()方法是实现的,因此它使用视图回收机制以及将行构造委托给newView()(构建行的视图)和bindView()(将数据绑定到行)方法。它还会将 移动Cursor到正确的位置。
此外,正如 njzk2 指出的,您应该在bindView()方法中设置视图上的数据。该newView()方法不会为 的每一行调用ListView,它只会在没有可用的回收行的情况下调用,这就是为什么你应该只在newView(). bindView()但是,每次都会调用该方法,您应该在此处将数据从 绑定Cursor到行视图。