gpt4 book ai didi

android - 多次调用Listview的getView方法

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

getView 方法 在 ListView 的 Adapter 中多次调用位置 0
所以它需要更多的时间来加载这个 Activity
并且每次调用 getView 时都在 Imageview 中设置 Bitamp

我也尝试将 ListView 高度设置为 fillparent 但没有解决我的问题

Xml 文件中的 ListView

      <RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ListView android:id="@+id/lv_order_list"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:listSelector="@android:color/transparent" >
</ListView>
</RelativeLayout>

Listview中的getView方法

@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
myView = convertView;
System.out.println("get view" + position);
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
myView = inflater.inflate(layoutResourceId, parent, false);

ImageView img_order = (ImageView) myView
.findViewById(R.id.img_order);
TextView title_of_ink = (TextView) myView
.findViewById(R.id.title_of_ink);
title_of_ink.setText("Text");
picasso.load("url").noFade().into(img_order);
return myView;
}

最佳答案

getView 在滚动过程中会被多次调用,这就是 ListView 的工作原理。

为了提高性能,您可以使用两种技术:
1) 查看回收 - 你做错了

public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.your_layout, null);
}

TextView text = (TextView) convertView.findViewById(R.id.text);
text.setText("Position " + position);

return convertView;
}

2) 使用 ViewHolder 模式

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;

if (convertView == null) {
convertView = mInflater.inflate(R.layout.your_layout, null);

holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

holder.text.setText("Position " + position);

return convertView;
}

private static class ViewHolder {
public TextView text;
}

3) 图片的异步加载它是大写 P 并且您缺少 Context 参数

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

代码借自lucasr.org .

关于android - 多次调用Listview的getView方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24585487/

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