我正在学习为教育目的构建一个Android应用程序,但我遇到了一个问题,并且想知道是否有人可以提供建议?
我创建了一个网格。网格中的每个方块在首次初始化时都包含占位符图像。当你长按'网格方块,出现上下文菜单。然后,用户应该可以选择从图库中上传图像,图像会调整大小并替换占位符图像,或者他们可以将文本输入到网格方块中,创建TextView对象以替换占位符图像。
我无法弄清楚如何确定从中打开上下文菜单的网格中的哪个View项。我已经给了他们所有标签,但不知道如何访问它,因为View对象没有传入onContextItemSelected方法。
我的GridAdapter中的适当代码在这里:
private Integer[] ids = {
android.R.drawable.image, android.R.drawable.image, android.R.drawable.image, android.R.drawable.image, android.R.drawable.image};
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.grid, parent, false);
holder = new Holder();
holder.mView = (View) convertView.findViewById(R.id.grid);
holder.mImageView = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.mImageView.setImageResource(mThumbIds[position]);
return convertView;
}
public static class Holder {
View mView;
ImageView mImageView;
}
}
我的Grid类中的适当代码:
Gridview gridview = (GridView) findViewById(R.id.gridview);
registerForContextMenu(gridview);
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.uploadmenu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.group_item1:
//store image in grid square
我有这种方法来修改GridAdapter类中的图像,但我不知道如何检索单击的网格项的位置和resourceId以打开上下文菜单。
public void updateImage(int position, int resourceId)
{
mThumbIds[position] = resourceId;
notifyDataSetChanged();
}
提前感谢任何指导。
答案 0 :(得分:1)
在onCreateContextMenu
内使用此段代码,
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
position = (int) info.id;
这会给你这个位置。将其另存为类属性,并在onContextItemSelected
内部使用。