简体   繁体   English

网格视图滚动问题?

[英]grid view scrolling issue?

I making a gridview that is made of a text and under it an image and everything is working fine but the problem is that when I scroll, the images gets repeated, so any tips on how I could solve this problem 我制作了一个由文本和在其下的图像构成的gridview,一切正常,但是问题是,当我滚动时,图像会重复出现,因此有关如何解决此问题的任何技巧

here is my adapter: 这是我的适配器:

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;
}
}

please if you know how to fix this please tell me how. 请如果您知道如何解决此问题,请告诉我如何。

so far I understood you should use viewholder pattern and every time when getView method calls check if viewholder is null initialize it otherwise do nothing just return view.. 到目前为止,我了解您应该使用viewholder模式,并且每次当getView方法调用检查viewholder是否为null时,都要初始化它,否则什么也不做,只是返回view。

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

and good example here - http://java.dzone.com/articles/android-listview-optimizations 很好的例子-http: //java.dzone.com/articles/android-listview-optimizations

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM