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

如果我快速滚动,android中的GridView将变为空白

请给我一个解决办法

提前谢谢

这是我的密码

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零件

  • 用户
    ViewHolder
    重新使用视图的方法。因为,每次滚动时,都是按id查找视图,这需要一些处理,可能会导致非常小的延迟,从而导致GridView闪烁

    下面是一些有用的链接,可以了解ViewHolder

  • 具体请参见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中,然后查看。我已经试过了。。。但是没用..谢谢你的回答什么不起作用?您尝试了什么,在问题中发布更新的代码。什么不起作用?您尝试了什么,请在问题中发布更新的代码。