选定的网格视图项背景在滚动后消失

时间:2016-06-24 09:06:15

标签: java android xml

我正在使用网格视图来显示手机中的图像。我像这样使用setOnItemLongClickListener来显示图像周围的绿色边框。

现在的问题是,当我向下滚动并返回时,绿色边框消失但仍然可以获得长项目的位置。

我理解意见是回收。但是,当用户滚动回实际选择的图像时,如何保持位置并显示绿色背景。

我在我的活动中写了这篇

MainView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                    arg1.setBackgroundColor(Color.GREEN);
                    arg1.setPadding(10, 10, 10, 10);

                return true;
            }
        });

这是我的适配器

public class CustomAdapter extends BaseAdapter {

    public ArrayList<String> images;
    ImageView imageView;
    private Activity context;
    public int width;

    public CustomAdapter(Activity localContext) {
        context = localContext;
        images = getAllImages(context);
    }     

public int getCount() {
        return images.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;

    }

public View getView(int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
                width = getScreenWidth() / 2 ;
                imageView = new ImageView(context);
                imageView.setLayoutParams(new GridView.LayoutParams(width,width));
            }
            else
            {
                imageView = (ImageView) convertView;
            }

            Glide.with(context).load(images.get(position))
                    .placeholder(R.drawable.placeholder)
                    .centerCrop()
                    .diskCacheStrategy(DiskCacheStrategy.NONE)
                    .skipMemoryCache(true)
                    .into(imageView);

            return imageView;
        }

public static int getScreenWidth() {
        return Resources.getSystem().getDisplayMetrics().widthPixels;
    }
}

我没有使用任何模型类。我将所有图像路径存储在数组列表中

1 个答案:

答案 0 :(得分:3)

你必须写

arg1.setBackgroundColor(Color.GREEN);
                    arg1.setPadding(10, 10, 10, 10);
通过检查单击的位置

,在适配器getView()方法中