gpt4 book ai didi

android - 适配器中的转换 View 是什么?它是如何工作的?

转载 作者:搜寻专家 更新时间:2023-11-01 09:25:26 25 4
gpt4 key购买 nike

我看不懂什么是convert view.. 具体来说,程序什么时候进入if条件,什么时候进入else条件?

public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.data, parent, false);

holder = new ViewHolder();
holder.txtDesc = convertView.findViewById(R.id.txtDesc);
holder.txtSubject = convertView.findViewById(R.id.txtSubject);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtDesc.setText(profileListView.get(position).getName());
holder.txtSubject.setText(profileListView.get(position).getEmail());

convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, profileListView.get(position).getName()+"hi go to detail page", Toast.LENGTH_SHORT).show();


}
});
return convertView;
}

最佳答案

convertView 是一个被 ListView 适配器重用的 View 。当您滚动时,不再可见的项目将被重新用于显示变得可见的新项目。这称为回收,这样做是为了提高性能。

convertView 为 null 时,这意味着没有可重复用于此项目的 View ,因此您必须从 XML 布局中扩展一个新 View 并在方法结束时返回它。

当不为null时,表示 View 已经被重用。您可以采用转换 View ,用新数据替换旧数据,然后返回此 View 。这样您就可以消除 inflate 方法调用,这是一项昂贵的操作。这有助于您的 ListView 平滑滚动。

这里还有另一个性能改进 - view holder 模式。它存储对项目 View 的引用,因此您不必为每个项目调用 findViewById 操作。这也是一项代价高昂的操作,最好避免。

关于android - 适配器中的转换 View 是什么?它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51061445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com