我有一个gridview布局,所有项目都插入非常精细,
现在,如果我在大屏幕上查看,那么所有完成的工作都很好,因为不需要滚动
但如果我在小屏幕上查看,则项目会动态更改其位置
bereif示例如下: -
就像我有28个项目并在网格视图7 * 4中排列,现在如果在第一个屏幕中显示多达20个项目,现在剩下的8个在我向下滚动屏幕时显示,但是现在有些元素是第一个或者第二行也是最后一行。
代码在这里
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;
}
答案 0 :(得分:54)
您应该像这样更改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
时,它会将旧数据存储在第一个记录中。转换视图用于避免资源的布局膨胀,这会花费您的时间和内存。您应该使用旧的膨胀视图,但设置新数据。
答案 1 :(得分:2)
我刚刚删除了
if(convertView==null)
它有效