0

コンテキストメニューを作成している動的に作成されたTextViewのリストがあります。ただし、私のコードは、クリックされたものではなく、最初のテキストビューのIDを返します。

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    // Create your context menu here
    menu.setHeaderTitle("Context Menu");
    menu.add(0, v.getId(), 0, "Edit n Replace");
    menu.add(0, v.getId(), 1, "Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
    // Call your function to preform for buttons pressed in a context menu
    // can use item.getTitle() or similar to find out button pressed
    // item.getItemID() will return the v.getID() that we passed before
    super.onContextItemSelected(item);

    if ( item.getTitle().toString().equals("Delete")){
        NotesDatabase db =new NotesDatabase(this);


        TextView tv = (TextView) findViewById(item.getItemId());
        db.searchAndDelete(tv.getText().toString());
    }
    return true;
}
4

2 に答える 2

1

両方の TextView に同じ ID を追加します

menu.add(0, v.getId(), 0, "Edit n Replace");
menu.add(0, v.getId(), 1, "Delete");

Text View ごとに異なる ID を試してください。このような :

menu.add(0, 1, 0, "Edit n Replace");
menu.add(0, 2, 1, "Delete");
于 2012-10-09T07:44:14.333 に答える
0

List Action onClick(View v) Event をリッスンする必要があります。例を参照してください。

//文字列グローバル変数を宣言 String result=null;

//contextmenu をクリックする前に onClick すると TextView を取得します

public void onClick(View v)
{
   TextView tv = (TextView)v.findViewById(R.id.yourTextViewId);
    result=tv.getText().toString();
}



 public boolean onContextItemSelected(MenuItem item) 
{

        super.onContextItemSelected(item);

        if ( item.getTitle().toString().equals("Delete")){
            NotesDatabase db =new NotesDatabase(this);


            TextView tv = (TextView) findViewById(item.getItemId());
            db.searchAndDelete(result);
        }
        return true;
    }
于 2012-10-09T08:20:44.337 に答える