网格视图滚动问题?

时间:2014-10-13 19:08:08

标签: java android eclipse gridview

我制作了一个由文本构成的网格视图,在它下面是一个图像,一切都运行正常,但问题是当我滚动时,图像会重复,所以任何提示我如何解决这个问题

这是我的适配器:

public class CustomGridAdapter extends BaseAdapter {
private Context context;
private final String[] mobileValues;

public CustomGridAdapter(Context context, String[] mobileValues) {
    this.context = context;
    this.mobileValues = mobileValues;
}

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.heartless_gridview_design, null);

        // set value into textview
        TextView textView = (TextView) gridView
                .findViewById(R.id.heartless_name);
        textView.setText(mobileValues[position]);

        // set image based on selected text
        ImageView imageView = (ImageView) gridView
                .findViewById(R.id.heartless_image);

        String mobile = mobileValues[position];


        if (mobile.equals("Shadow")) {
            imageView.setImageResource(R.drawable.shadow);
        } else if (mobile.equals("Soldier")) {
            imageView.setImageResource(R.drawable.soldier);
        } else if (mobile.equals("Large Body")) {
            imageView.setImageResource(R.drawable.large_body);
        } else if (mobile.equals("Silver Rock")) {
            imageView.setImageResource(R.drawable.silver_rock);
        } else if (mobile.equals("Emerald Blues")) {
            imageView.setImageResource(R.drawable.emerald_blues);
        } else {
        }

    } else {
        gridView = (View) convertView;
    }

    return gridView;
}

@Override
public int getCount() {
    return mobileValues.length;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}
}

如果您知道如何解决此问题,请告诉我如何解决。

1 个答案:

答案 0 :(得分:0)

到目前为止,我知道你应该使用viewholder模式和 每次getView方法调用时检查viewholder是否为null初始化它,否则只返回视图..

http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder

这里的好例子 - http://java.dzone.com/articles/android-listview-optimizations