我正在使用网格视图来显示手机中的图像。我像这样使用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;
}
}
我没有使用任何模型类。我将所有图像路径存储在数组列表中
答案 0 :(得分:3)
你必须写
arg1.setBackgroundColor(Color.GREEN);
arg1.setPadding(10, 10, 10, 10);
通过检查单击的位置,在适配器getView()
方法中