Android:Gridview在快速滚动时变为空白
如果我快速滚动,android中的GridView将变为空白 请给我一个解决办法 提前谢谢 这是我的密码Android:Gridview在快速滚动时变为空白,android,android-layout,android-gridview,Android,Android Layout,Android Gridview,如果我快速滚动,android中的GridView将变为空白 请给我一个解决办法 提前谢谢 这是我的密码 gridView.setAdapter(new ImageAdapter(ChangedDashboard.this, stringarray)); 这是我在gridview上设置的适配器类 public class ImageAdapter extends BaseAdapter { private Context context; private final String[] menu
gridView.setAdapter(new ImageAdapter(ChangedDashboard.this, stringarray));
这是我在gridview上设置的适配器类
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] menuvalues;
public ImageAdapter(Context context, String[] menuValues) {
this.context = context;
this.menuvalues = menuValues;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.changedashboard, null);
} else {
gridView = (View) convertView;
}
TextView textView = (TextView) gridView
.findViewById(R.id.textView1);
textView.setText(menuvalues[position]);
// set image based on selected text
ImageView imageView = (ImageView) gridView
.findViewById(R.id.imageView1);
String mobile = menuvalues[position];
if (mobile.equals("1")) {
imageView.setImageResource(R.drawable.new1);
} else if (mobile.equals("2")) {
imageView.setImageResource(R.drawable.new2);
} else if (mobile.equals("3")) {
imageView.setImageResource(R.drawable.new3);
}else if (mobile.equals("4")) {
imageView.setImageResource(R.drawable.new4);
} else if (mobile.equals("5")) {
imageView.setImageResource(R.drawable.new5);
}else if (mobile.equals("6")) {
imageView.setImageResource(R.drawable.new6);
}
return gridView;
}
public int getCount() {
return menuvalues.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
}
请给我这个问题的解决办法
更新代码
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] menuvalues;
public ImageAdapter(Context context, String[] menuValues) {
this.context = context;
this.menuvalues = menuValues;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.changedashboard, null);
ViewHolder holder = new ViewHolder();
holder.textView = (TextView) gridView
.findViewById(R.id.textView1);
holder.imageView = (ImageView) gridView
.findViewById(R.id.imageView1);
gridView.setTag(holder);
} else {
gridView = (View) convertView;
}
/*TextView textView = (TextView) gridView
.findViewById(R.id.textView1);*/
// set image based on selected text
/*ImageView imageView = (ImageView) gridView
.findViewById(R.id.imageView1);*/
String mobile = menuvalues[position];
ViewHolder holder = (ViewHolder)gridView.getTag();
holder.textView.setText(mobile);
if (mobile.equals("1")) {
holder.imageView.setImageResource(R.drawable.new1);
} else if (mobile.equals("2")) {
holder.imageView.setImageResource(R.drawable.new2);
} else if (mobile.equals("3")) {
holder.imageView.setImageResource(R.drawable.new3);
}else if (mobile.equals("4")) {
holder.imageView.setImageResource(R.drawable.new4);
} else if (mobile.equals("5")) {
holder.imageView.setImageResource(R.drawable.new5);
}
return gridView;
}
public int getCount() {
return menuvalues.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public static class ViewHolder {
TextView textView;
ImageView imageView;
}
}用户
视图持有者
重新使用视图的方法。因为,每次滚动时,都是按id查找视图,这需要一些处理,可能会导致非常小的延迟,从而导致GridView闪烁
下面是一些有用的链接,可以了解ViewHolder
用户
ViewHolder
重新使用视图的方法。因为,每次滚动时,都是按id查找视图,这需要一些处理,可能会导致非常小的延迟,从而导致GridView闪烁
下面是一些有用的链接,可以了解ViewHolder
我面临同样的问题,可能是TextView的高度问题。因此,将TextView设为单行,如下所示: android:singleLine=“true” 或者,如果您想为某些项目设置2行或3行,则将所有项目设置为2行或3行,如下所示: android:minLines=“2”
请参阅:我面临同样的问题,可能是TextView的高度有问题。因此,将TextView设为单行,如下所示: android:singleLine=“true” 或者,如果您想为某些项目设置2行或3行,则将所有项目设置为2行或3行,如下所示: android:minLines=“2”
请参阅:最好发布代码,这样用户可以给出准确的答案您是否尝试过android:cacheColorHint=“#00000000”只需将以上属性放到您的GridView中,然后查看。我已经尝试过了。。。但是没有用..谢谢回复最好是发布代码,这样用户才能给出准确的答案你有没有试过android:cacheColorHint=“#00000000”只需将以上属性放到你的GridView中,然后查看。我已经试过了。。。但是没用..谢谢你的回答什么不起作用?您尝试了什么,在问题中发布更新的代码。什么不起作用?您尝试了什么,请在问题中发布更新的代码。