【发布时间】:2016-04-20 05:20:26
【问题描述】:
我会尽量说清楚。 我有一个显示图像的 Gridview。用户可以在 OnLongClick 中选择多个图像。 onLongClick 在适配器中。该代码还有一个 onItemSelectedListener,它在特定位置缩放选定的图像。 问题是在任何位置点击 gridview 后都不会触发 onItemSelectedListener。当使用 onLongClick 时,它会同时触发 OnItemSelectedListener 和 onLongClickListener 方法。我尝试使用之前提供的解决方案,即在 onLongClickListener 中返回 true,但这也不起作用。我被困在这里。帮助将不胜感激。 提前谢谢你。
gvImages.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
PhotoBeans bean = (PhotoBeans) parent.getItemAtPosition(position);
j = position;
photoUrl = bean.getThumbImageUrl();
Log.e("photoUrl", "" + photoUrl);
zoomImageFromThumb(view, photoUrl);
}
});
//适配器
public class ImageAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private ArrayList<PhotoBeans> arrayListPhoto;
public ImageAdapter(ArrayList<PhotoBeans> arrayListPhoto) {
this.arrayListPhoto = arrayListPhoto;
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return arrayListPhoto.size();
}
@Override
public Object getItem(int position) {
return arrayListPhoto.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View rootView = convertView;
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
rootView = mInflater.inflate(R.layout.custom_gallery_item, null);
holder.imgThumb = (ImageView) rootView.findViewById(R.id.imgThumb);
holder.chkImage = (ImageView) rootView.findViewById(R.id.chkImage);
rootView.setTag(holder);
} else {
holder = (ViewHolder) rootView.getTag();
}
if (arrayListPhoto.get(position).isImageSelected()) {
holder.chkImage.setVisibility(View.VISIBLE);
holder.imgThumb.setAlpha(0.5f);
} else {
holder.chkImage.setVisibility(View.GONE);
holder.imgThumb.setAlpha(1f);
}
holder.imgThumb.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (arrayListPhoto.get(position).isImageSelected()) {
holder.chkImage.setVisibility(View.GONE);
holder.imgThumb.setAlpha(1f);
arrayListPhoto.get(position).setIsImageSelected(false);
} else {
holder.chkImage.setVisibility(View.VISIBLE);
holder.imgThumb.setAlpha(0.5f);
arrayListPhoto.get(position).setIsImageSelected(true);
}
notifyDataSetChanged();
return true;
}
});
Picasso.with(Photos.this)
.load(new File(arrayListPhoto.get(position).getThumbImageUrl()))
.resize(150, 150)
.centerCrop()
.into(holder.imgThumb);
return rootView;
}
}
class ViewHolder {
ImageView imgThumb;
ImageView chkImage;
int id;
}
【问题讨论】:
-
请输入您的代码。
-
为什么要在适配器中编写longclick的代码
-
能否请您举例说明我应该如何更改代码?
-
查看已发布的答案 medam?
-
嗯...好吧,亲爱的,你错了听众。你必须 onItemLongClickListner 对
标签: android gridview onitemclicklistener onlongclicklistener