Android 当滚动屏幕时,GridView元素会动态更改其位置
我有一个gridview布局,所有项目都插入得非常精细, 现在,若我在大屏幕上检查,那个么所有的工作都完成了,因为不需要滚动 但如果我在小屏幕上查看,则项目会动态更改其位置 如果示例如下所示:- 就像我有28个项目,并以7*4的网格视图排列,现在如果第一个屏幕中显示多达20个项目,那么在我向下滚动屏幕时会显示剩余的8个项目,但现在第一行或第二行的一些元素也会放在最后一行。 代码在这里Android 当滚动屏幕时,GridView元素会动态更改其位置,android,Android,我有一个gridview布局,所有项目都插入得非常精细, 现在,若我在大屏幕上检查,那个么所有的工作都完成了,因为不需要滚动 但如果我在小屏幕上查看,则项目会动态更改其位置 如果示例如下所示:- 就像我有28个项目,并以7*4的网格视图排列,现在如果第一个屏幕中显示多达20个项目,那么在我向下滚动屏幕时会显示剩余的8个项目,但现在第一行或第二行的一些元素也会放在最后一行。 代码在这里 public class ImageAdapter extends BaseAdapter {
public class ImageAdapter extends BaseAdapter
{
Context mContext;
//public static final int ACTIVITY_CREATE = 10;
public ImageAdapter(Context c)
{
mContext = c;
}
@Override
public int getCount()
{
// TODO Auto-generated method stub
return providers.length;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
View v;
if(convertView==null)
{
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.icontext, null);
TextView tv = (TextView)v.findViewById(R.id.icon_text);
tv.setText(providers[position]);
ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
iv.setImageResource(R.drawable.icon);
}
else
{
v = convertView;
}
return v;
}
您应该像这样更改
getView
方法
public View getView(int position, View convertView, ViewGroup parent){
// TODO Auto-generated method stub
View v;
if(convertView==null)
{
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.icontext, null);
}else{
v = convertView;
}
TextView tv = (TextView)v.findViewById(R.id.icon_text);
tv.setText(providers[position]);
ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
iv.setImageResource(R.drawable.icon);
return v;
}
您的问题是,当您使用
convertView
时,它存储来自第一条记录的旧数据。“转换视图”用于避免资源的布局膨胀,这会耗费您的时间和内存。您应该使用旧的充气视图,但设置新数据。我刚刚删除了
if(convertView==null)
它可以工作可以发布任何代码吗?例如,你的适配器代码?我粘贴了ImageAdapter代码,请看我粘贴的代码,现在你能给我建议吗?嗨,我也有同样的问题。但是我用复选框代替了文本视图。当视图中有任何变化时,选中的复选框对我来说都是变化的,但是滚动时,它不能平稳地工作……那太好了。谢谢。如何在这方面实现平滑滚动?我已经更新了我的代码,但它不工作,任何帮助,请我急需它:是的,这修复了问题。但是性能变得非常糟糕。这解决了我的问题。谢谢你,鲍里斯