0

コンテキストメニューをトリガーするアイテムからリスト内の位置を取得したいと思います。これが私のコードです:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    c = contacts.get(position);
    Toast.makeText(v.getContext(), c.getName().toString() + " Clicked " + (id + 1), Toast.LENGTH_SHORT).show();
    Intent i = new Intent(v.getContext(), DetailActivity.class);
    i.putExtra("key", id + 1);
    startActivity(i);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    this.selectedPerson = contacts.get(info.position);
    MenuInflater mi = getMenuInflater();
    mi.inflate(R.menu.activity_context, menu);
    menu.setHeaderIcon(R.drawable.settings2);
    menu.setHeaderTitle(this.selectedPerson.getName().toString() + " - Options");
}

@Override
public boolean onContextItemSelected(MenuItem item) {

    switch(item.getItemId()){
    case R.id.menu_edit:
        Toast.makeText(this, "Edit", Toast.LENGTH_SHORT).show();


        return true;
    case R.id.menu_delete:
        Toast.makeText(this, "Delete", Toast.LENGTH_SHORT).show();


        return true;
    case R.id.menu_fav:
        Toast.makeText(this, "Added to Favourites!", Toast.LENGTH_SHORT).show();

        return true;
    }

    return false;

}

で行ったのと同様の方法で位置を正確に取得するにはどうすればよいonListItemClick()ですか? その理由は、正しく実行するために行 ID を必要とするデータベース アダプターの削除メソッドを呼び出したいからです。

どうもありがとう!

4

1 に答える 1

0

あなたが使用することができます

AdapterView.AdapterContextMenuInfo info = AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

onContextItemSelected(MenuItem item)でリスト アダプターのアイテムの位置を取得する

@Override
 public boolean onContextItemSelected(MenuItem item) {

 AdapterView.AdapterContextMenuInfo info = AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

switch(item.getItemId()){
case R.id.menu_edit:
    Toast.makeText(this, "Edit", Toast.LENGTH_SHORT).show();


    return true;
case R.id.menu_delete:
    Toast.makeText(this, "Delete", Toast.LENGTH_SHORT).show();


    return true;
case R.id.menu_fav:
    Toast.makeText(this, "Added to Favourites!", Toast.LENGTH_SHORT).show();

    return true;
}

return false;

}
于 2013-01-18T04:56:38.367 に答える