Android GridView使用过滤器创建上下文菜单
我目前有一个带有自定义阵列适配器和过滤器的网格视图。我正在尝试基于长时间单击gridview项来创建上下文菜单。但是,在添加过滤器之前,我会根据其位置说明按下了哪个项目,现在,当过滤项目时,位置会发生变化,因此所采取的任何操作都会使用错误的资源/选择错误的项目。有什么想法吗 以下是我的gridview初始化:Android GridView使用过滤器创建上下文菜单,android,listview,gridview,contextmenu,adapter,Android,Listview,Gridview,Contextmenu,Adapter,我目前有一个带有自定义阵列适配器和过滤器的网格视图。我正在尝试基于长时间单击gridview项来创建上下文菜单。但是,在添加过滤器之前,我会根据其位置说明按下了哪个项目,现在,当过滤项目时,位置会发生变化,因此所采取的任何操作都会使用错误的资源/选择错误的项目。有什么想法吗 以下是我的gridview初始化: final GridView gridview = (GridView) findViewById(R.id.gridview); aAdpt = new shareadapter
final GridView gridview = (GridView) findViewById(R.id.gridview);
aAdpt = new shareadapter(planetsList, this);
gridview.setAdapter(aAdpt);
gridview.setTextFilterEnabled(true);
this.registerForContextMenu(gridview);
以下是我的onClickListener(作为一个示例,说明我通常如何获取要在活动/意图中使用的过滤项:
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Planet link = (Planet) gridview.getItemAtPosition(position);
Intent i = new Intent(ShareActivity.this,
ShareActivitySecond.class);
i.putExtra("IdImgFull", link.getIdImgFull());
i.putExtra("IdImgShare", link.getIdImgShare());
startActivity(i);
// startSecondActivity(position);
}
});
终于解决了
在onContextItemSelected中调用我的适配器和数组,并从中可以将变量设置为操作。关键的两行是:
Planet planet = aAdpt.getItem(aInfo.position);
int IdImgShare = planet.getIdImgShare();
全文:
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo aInfo = (AdapterContextMenuInfo) item
.getMenuInfo();
Planet planet = aAdpt.getItem(aInfo.position);
int IdImgShare = planet.getIdImgShare();
switch (item.getItemId()) {
case R.id.share:
shareMethod(IdImgShare);
return true;
case R.id.save:
saveMethod(IdImgShare);
return true;
default:
return true;
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo aInfo = (AdapterContextMenuInfo) item
.getMenuInfo();
Planet planet = aAdpt.getItem(aInfo.position);
int IdImgShare = planet.getIdImgShare();
switch (item.getItemId()) {
case R.id.share:
shareMethod(IdImgShare);
return true;
case R.id.save:
saveMethod(IdImgShare);
return true;
default:
return true;
}
}