活动开始时我的GridView
看似正确
但向下滚动项目位置更改后
我在第一行的最后一项有一个大文本,我认为这是我的问题
这是我的getView()
代码
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null) {
LayoutInflater li = getLayoutInflater();
v= li.inflate(R.layout.item, null);
} else {
v= convertView;
}
ImageView imageView = (ImageView) v.findViewById(R.id.grid_item_image);
imageView.setImageResource(R.drawable.logo);
TextView textView = (TextView) v.findViewById(R.id.grid_item_label);
textView.setText(PersianReshape.reshape( Values[position].getName()));
Typeface face = Typeface.createFromAsset(context.getAssets(),"font/BNazanin.ttf");
textView.setTypeface(face);
textView.setTextSize(farin.code.rahnamee.attrib.attribute.content_font_size);
return gridView;
}
答案 0 :(得分:1)
您的网格项目应该都具有统一的高度。考虑设置最小/最大文本行数以确保高度均匀,并确保ImageView
也具有一致的大小。一种方法是使用ImageView
的已知固定大小,而不仅仅是wrap_content
。
答案 1 :(得分:0)
你应该改变你的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时,它会将旧数据存储在第一个记录中。转换视图用于避免资源的布局膨胀,这会花费您的时间和内存。您应该使用旧的膨胀视图,但设置新数据。