0

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

これが私のグリッドビューの初期化です:

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;
    }
}
4

1 に答える 1