0

listView の各項目に 2 つの編集テキストがあります。ユーザーが listView の任意の項目を長押しすると、contextMenu が表示され、[編集] と [削除] の 2 つのオプションが表示されます。listView ユーザーが長押ししてコンテキスト メニューを開く項目をどのように知ることができますか。

   XML of each item of ListView

<?xml version="1.0" encoding="utf-8"?>

    <TextView android:id="@+id/templateId"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"/>

    <TextView android:id="@+id/templateTextId"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"/>

   XML for context menu

 <?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/editTemplate"
          android:title="Edit" />
  <item android:id="@+id/saveTemplate"
        android:title="Save" />
  <item android:id="@+id/deleTemplate"
        android:title="Delete" />

Code


@Override 
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 
          {
                    super.onCreateContextMenu(menu, v, menuInfo);
                    menu.setHeaderTitle("Select The Action");  
                    menu.add(0, v.getId(), 0, "Edit");  
                    menu.add(0, v.getId(), 0, "Delete");  


                    TextView tv=(TextView)v.findViewById(R.id.templateId);
                    selectedId=tv.getText().toString();
                    TextView tvMessage=(TextView)v.findViewById(R.id.templateTextId);
                    selectedTemplate=tvMessage.getText().toString();
                    //Toast.makeText(getApplicationContext(), "Item In List View Clicked ",Toast.LENGTH_SHORT).show();

          }


        @Override  
        public boolean onContextItemSelected(MenuItem item) {  
            if(item.getTitle()=="Edit")
            {
                       // Toast.makeText(ShowTemplates.this, "Edit Clicked",Toast.LENGTH_SHORT).show();
                        Context mContext = getApplicationContext();
                        Dialog dialog = new Dialog(ShowTemplates.this);

                        dialog.setContentView(R.layout.custome_dialog_edit_template);
                        dialog.setTitle("Edit Template");

                        txtMsgTemplate = (EditText) dialog.findViewById(R.id.editTextTemplateCustomDialog);
                        txtMsgTemplate.setText(selectedTemplate);
                        Button btnSave=(Button)dialog.findViewById(R.id.btnSaveEditedTemplate);

                        dialog.show();
              }

私はそれを見つけようとしました、そして私は次のようになりました

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

// Get the info on which item was selected
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;

// Get the Adapter behind your ListView (this assumes you're using
// a ListActivity; if you're not, you'll have to store the Adapter yourself
// in some way that can be accessed here.)
Adapter adapter = getListAdapter();

// Retrieve the item that was clicked on
Object item = adapter.getItem(info.position);

}

しかし、この Item オブジェクトの使い方がわかりません。それを行う他の方法はありますか?ありがとう

4

1 に答える 1

1

ListViews にはgetSelectedItemPosition、アダプター内の項目の位置で int を返す関数が呼び出されます。私はあなたがそれを使うことができると確信しています。それが で null の場合は、 でonCreateContextMenuそれへの参照を取得してみてくださいonLongClick listener

于 2012-07-31T06:02:24.390 に答える