gpt4 book ai didi

java - gridview 中的图像在滚动时改变其位置

转载 作者:行者123 更新时间:2023-12-01 14:14:51 25 4
gpt4 key购买 nike

嗨,当滚动 ImageView 改变其位置时,我遇到了这种问题他们的背景图像。我在此网站上看到了有关此主题的其他答案,但没有一个帮助了我。

像这样一次: grid view scrolling issue GridView scrolling problem on Android GridView elements changes their place dynamically when scroll screen

还有许多其他...但他们并没有解决我的问题。

重要的是,我不使用 gridview 或 gridview 项目(imageViews)的自定义布局。我以编程方式创建它们。这对我来说非常重要,所以如果有人知道答案请帮助我......谢谢。

public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
imageView = new ImageView(ctx);
} else {
imageView = (ImageView) convertView;
}
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
imageView.setBackgroundResource(tmp[position]);
imageView.setImageResource(blank);

return imageView;
}

最佳答案

这是一个简单的方法。适配器在滚动时回收每个 View 。所以我们只需要创建那些在第一次之后重复使用的。持有者有助于避免像 findViewById 这样昂贵的调用,并通过仅获取旧项目并更改其属性来重新使用项目。

需要记住的一点是,我们需要将要显示的图像保存在任何一个容器(如 array[] 或 List)中,并在每次返回 View 之前重置,否则它将显示之前最后一次回收的 View 。

public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

if (convertView == null) {
convertView = inflater.inflate(R.layout.item_layout, null);
holder = new ViewHolder();
holder.cover = (ImageView) convertView
.findViewById(R.id.item_cover);
convertView.setTag(holder);

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

}

holder.cover.setBackgroundResource(tmp[position]);

return convertView ;
}

static class ViewHolder {
ImageView cover;
}

关于java - gridview 中的图像在滚动时改变其位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18199887/

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