В настоящее время у меня есть сетка с адаптером адаптера и фильтром. Я пытаюсь создать контекстное меню, основанное на длинном клике на элементе gridview. Однако перед добавлением фильтра я бы указал, какой элемент был нажат в зависимости от его положения, теперь, когда элементы фильтруются, позиции меняются, поэтому любое предпринятое действие использует неправильный ресурс/выбирает неправильный элемент. Любая идея вокруг этого?GridView создает контекстное меню с фильтром
Вот мой GridView инициализации:
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);
}
});
И вот мое контекстное меню для создания, поскольку вы можете видеть, что это зависит от позиции, и я не уверен, как добавить переменную int link.getIdImgShare()
в к нему.
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.shareactivity, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
int IndexSelected = info.position;
switch (item.getItemId()) {
case R.id.share:
shareMethod(IndexSelected);
return true;
case R.id.save:
saveMethod(IndexSelected);
return true;
default:
return true;
}
}