0

「タイトル」用と「ストーリー」用の 2 つの編集テキスト フィールドを持つ XML レイアウトがあります。ユーザーがこれらのテキスト フィールドにデータを入力し、戻るボタンを押すと、エントリがリストに保存されます。タイトル セットとして表示します。リスト ビューは A1 などのアクティビティに存在します。A1 は Activity を拡張します。また、リスト内の項目を「長押し」すると、編集、削除、読み取りボタンのあるコンテキスト メニューが表示されます。編集ボタンが押された場合、クリックされたアイテムに対応するテキスト フィールドに入力されたデータを編集できる別のアクティビティを開く必要があります。また、リスト内でクリックされたアイテムの ID と位置が必要になります。タイプ ListView のリスト変数を使用してアダプタを追加しています。また、「

アクティビティ A1 のコードの一部を次に示します: " static id_item_clicked;

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // here arg3 is the id of the item which is pressed
    registerForContextMenu(arg1);
    final long row_passed = arg3;
    Cursor c = (Cursor) arg0.getItemAtPosition(arg2);
    title = c.getString(c.getColumnIndex(DataHolder.KEY_TITLE));
    story = c.getString(c.getColumnIndex(DataHolder.KEY_STORY));
            ........

@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub
    id_item_clicked = arg3;
    return false;
}


    @Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.add("EDIT");
    menu.add("READ");
    menu.add("DELETE");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    if (item.getTitle() == "EDIT") {

        int position = list.getSelectedItemPosition();
        long item_id = list.getSelectedItemId();


    }
    if (item.getTitle() == "READ") {

    }
    if (item.getTitle() == "DELETE") {

    }
    return super.onContextItemSelected(item);
} "
4

1 に答える 1

1

を使用してコンテキスト メニュー情報を取得する必要がありますAdapterContextMenuInfo。次にinfo.id、行 IDを取得します。

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    long rowid = info.id    // This is your row id
    // Your code here
}
于 2012-05-24T11:08:04.007 に答える