Привет сообщество stackoverflow,
По сути, у меня есть галерея, отображающая некоторые изображения с использованием gridView + imageView
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<GridView android:id="@+id/PhoneImageGrid"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:numColumns="auto_fit" android:verticalSpacing="12dp"
android:horizontalSpacing="12dp" android:columnWidth="90dp"
android:stretchMode="columnWidth" android:gravity="center" />
<ImageView android:id="@+id/thumbImage" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_centerInParent="true"
android:scaleType="centerCrop"
/>
Я хотел бы использовать setOnLongClick для каждого imageView, отображаемого адаптером.
Это работает хорошо, однако, при длинном нажатии на imageView, я хотел бы отобразить ContextMenu с некоторыми элементами (то есть, если вы долго нажимаете на imageView, contextMenu отображается с некоторыми элементами: информация об изображении, отправьте это изображение ... ).
К сожалению, я не могу понять, как надуть это меню в адаптере. (Вероятно, не очень хороший способ сделать это)
У меня есть следующие строки в моей основной деятельности
_adapter = new ImageAdapter(activity,storedObjects.getAlbums());
imagegrid.setAdapter(_adapter);
Мой адаптер (некоторые ненужные строки удалены)
public class ImageAdapter extends BaseAdapter {
private Albums albums;
private Context context;
private LayoutInflater inflater;
public ImageAdapter(Context context, Albums albums) {
this.albums = albums;
this.context = context;
inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
if(albums.getAlbumsListSize() == 0) {
Toast.makeText(context, "There is no album to display", Toast.LENGTH_LONG).show();
}
}
public View getView(final int position, View view, ViewGroup parent) {
ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.galleryitem, null);
holder.imageview = (ImageView) view.findViewById(R.id.thumbImage);
holder.checkbox = (CheckBox) view.findViewById(R.id.itemCheckBox);
holder.textview = (TextView) view.findViewById(R.id.album_name);
holder.checkbox.setChecked(true);
//Bitmap loadingBM = BitmapFactory.decodeResource(context.getResources(),R.drawable.loading_image);
//holder.imageview.setImageBitmap(loadingBM);
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();
}
holder.imageview.setClickable(true);
holder.imageview.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
Log.v(TAG,"onLongClick ok !");
return false;
}
});
imageDownloader.download(this.context, albums.getAllAlbums().get(position).getThumbnailUri(), holder.imageview);
return view;
}
Вопросы:
- setOnLongClickListener работает правильно, когда я нажимаю на изображение, мой журнал отображается в logcat, однако, как создать меню для каждого imageView?
Видимо, я могу переопределить только onCreateContextMenu в моей основной деятельности. Я думаю, я мог бы передать каждый ImageView в onCreateContextMenu (меню ContextMenu, View v, менюInfo ContextMenuInfo), но как?
Буду очень признателен, если вы поможете мне с этим.
Большое спасибо
Флоран Вальделиевр