0

いくつかの文字列を表示するListViewと、追加、表示、削除のオプションを持つダイアログオプションメニューを呼び出してポップアウトするsetOnItemLongClickのメソッドがあります。setOnItemLongCLick は、ユーザーが "Dictionary"、"Book"、"Journal" などの Listview のアイテムの 1 つをロングクリックするとトリガーされます。

ここでやりたいことは、ユーザーが「ジャーナル」を長押しして削除オプションを選択した後、「ジャーナルの削除」というメッセージをトーストしたいということです。「本」を長押しすると「本を削除」などになります。そのため、setOnItemLongClick から選択した文字列を取得し、その文字列をダイアログ オプション メニューに渡す必要があります。

これが可能かどうか、そしてどうやって?よろしくお願いします。

これは、Set Dialog Menu Options の私のコードです

   final String[] option = new String[] { "Add", "View", "Delete" }; 
    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, option);
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Select Option"); 
    builder.setAdapter(adapter2, new DialogInterface.OnClickListener() 
    { 
        public void onClick(DialogInterface dialog, int which) 
        { // TODO Auto-generated method stub 
            switch(which){
            case 0: 
                Toast.makeText(getApplicationContext(),  "Add", Toast.LENGTH_SHORT).show();
                break;
            case 1: 
                Toast.makeText(getApplicationContext(),  "View", Toast.LENGTH_SHORT).show();
                break;
            case 2: 
                String delete="";
                Toast.makeText(getApplicationContext(),  "Delete " + delete, Toast.LENGTH_SHORT).show();
                break;
            default:
                // nothing
                break;
            }
        } 

    });

    final AlertDialog dialog = builder.create();

これは、Set On Item Long Clickの私のコードです

    mylist.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() 
    {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
        {
            //show dialog menu options box

            dialog.show(); 
            return true;
        }
    });
4

3 に答える 3

0

を呼び出す代わりに dialog.show();onItemLongClick選択したインデックス パラメータを使用してすべてのダイアログ関連コードをメソッドにラップし、ダイアログ ボックスで押された項目の位置を次のように取得できます。

private AlertDialog showOpetionMenu(int selected_index){

  // your code here...

AlertDialog dialog = builder.create();

return dialog;
}

そして、onItemLongClick選択したインデックスを渡すことでダイアログインスタンスを取得できます:

 @Override
   public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
                                        int arg2, long arg3) 
      {
         //show dialog menu options box
         AlertDialog dialog=dialogshowOpetionMenu(arg2);//<<pass selected index
         dialog.show(); 
         return true;
     }
于 2013-10-19T15:34:00.157 に答える
0

何人かの助けを借りて、これが私が得たものです。

AlertDIAlog のメソッドを作成します。

    private AlertDialog showOpetionMenu(final String selected_index){

    final String[] option = new String[] { "Add", "View", "Delete" }; 
    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, option);
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Select Option"); 
    builder.setAdapter(adapter2, new DialogInterface.OnClickListener() 
    { 
        public void onClick(DialogInterface dialog, int which) 
        { // TODO Auto-generated method stub 
            switch(which){
            case 0: 
                Toast.makeText(getApplicationContext(),  "Add", Toast.LENGTH_SHORT).show();
                break;
            case 1: 
                Toast.makeText(getApplicationContext(),  "View", Toast.LENGTH_SHORT).show();
                break;
            case 2: 
                delete="";
                Toast.makeText(getApplicationContext(),  "Delete" + selected_index, Toast.LENGTH_SHORT).show();
                break;
            default:
                // nothing
                break;
            }
        } 

    }); 

    final AlertDialog dialog = builder.create(); 

    return dialog;
    }

次に、これを onItemLongClick で行うだけです

    mylist.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() 
    {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
        {
            //show dialog menu options box
            String selectedType=listType.get(arg2);
            AlertDialog dialog=showOpetionMenu(selectedType);//<<pass selected index
            dialog.show(); 
            return true;
        }
    });

助けてくれてありがとう!

于 2013-10-20T04:56:51.453 に答える
0

onItemLongClick を使用する代わりにpublic void onCreateContextMenu(final ContextMenu menu, final View v, final ContextMenuInfo menuInfo)、編集と削除のオプションを設定する場所や必要なものを使用できます。

コンテキスト メニューから選択されたアイテムのアクションは、

public boolean onContextItemSelected(final MenuItem item)

コンテキスト メニューの詳細については、こちらを参照してください。

ステップバイステップのチュートリアルについては、こちらをご覧ください

ここ

于 2013-10-19T15:32:42.810 に答える