現在、カスタム配列アダプターとフィルターを備えたグリッド ビューがあります。グリッドビュー アイテムのロング クリックに基づいてコンテキスト メニューを作成しようとしています。ただし、フィルターを追加する前に、その位置に応じてどのアイテムが押されたかを述べます。現在、アイテムがフィルター処理されると、位置が変更されるため、実行されたアクションは間違ったリソースを使用したり、間違ったアイテムを選択したりします。これについて何か考えはありますか?
これが私のグリッドビューの初期化です:
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;
}
}