你好计算器社区,BaseAdapter和文本菜单
基本上,我有画廊显示使用一个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,ContextMenuInfo menuInfo),但是如何?
如果你能帮助我解决这个问题,我将非常感激。
非常感谢您
弗洛朗Valdelievre
基本上,这是我试图做的第一件事,但没有成功
' final GridView imagegrid =(GridView)findViewById(R.id.PhoneImageGrid); _adapter = new ImageAdapter(activity,getAlbums()); imagegrid.setAdapter(_adapter); imagegrid。setClickable(真); registerForContextMenu(imagegrid); ' 然后,我已经实现
' @Override 公共无效onCreateContextMenu(文本菜单的菜单,视图V,ContextMenuInfo menuInfo){ super.onCreateContextMenu(菜单,V,menuInfo); Log.v(“上下文菜单”,“上下文菜单”); \t} ' 您是否有任何线索为什么onCreateContextMenu不被调用?
谢谢 –
你的意思是'onCreateContextMenu'在你长时间按下时不会被调用?确保从个别列表项中删除了'setOnLongClickListener'。 – chiuki