

onItemLongClickがspinnerで使えないのは、確認済みです。  
このコードのように、Handlerを使って、onTouch()で、1000m秒後にボタンが押されていれば、長押し、として、認めるというコードを書きたいです。  
そして、onItemSelected()で、選択された物のデータを取得して、データベースからdeleteしたいです。  
アドバイスをどうぞよろしくお願いします。

[code]

    final Handler actionHandler = new Handler();
        final Runnable runnable = new Runnable() {
            @Override
            public void run() {
                Toast toast = Toast.makeText(LocationActivity.this, "Long click", Toast.LENGTH_SHORT);
                toast.show();
            }
        };
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
    
                // Spinner spinner = (Spinner) parent;
                //  deleteitem = (String) spinner.getSelectedItem();
    
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    actionHandler.postDelayed(runnable, 1000);
    
                    //ここで、押してから1秒後にelse ifだったら、ロングクリックと判断して、行動を起こす?
    
                } else if (event.getAction() == MotionEvent.ACTION_UP) {
                    actionHandler.removeCallbacks(runnable);
    
    
                }
                return false;
            }
        });
        //--------------ここからonItemSelect-------------//
    
    
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    
                //この下２行は正しいとこに
                Spinner spinner = (Spinner) parent;
                deleteitem = (String) spinner.getSelectedItem();
                //-------------------------ここで、長押しされた時のaction-------------------//
                //--------------ここで、消していいですか？を確認のダイアログを出力--------------//
                LayoutInflater inflater = (LayoutInflater) LocationActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE);
                final View layout = inflater.inflate(R.layout.dialog_deleteplace_us, (ViewGroup) findViewById(R.id.layout_deleteplace));
                // アラーとダイアログ を生成
                AlertDialog.Builder builder = new AlertDialog.Builder(LocationActivity.this);
                builder.setView(layout);
                //---------dailogの削除ボタンを追加、それが押されたらデータベースから削除する--------//
                builder.setPositiveButton("削除", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        if (deleteitem.equals("GPSの現在地")) {
                        } else if (deleteitem.equals("googlemapで検索")) {
                        } else {
                            String sql = "delete from favorite where  placename  = '" + deleteitem + "' " +
                                    "and username = '" + username + "';";
                            System.out.println(sql + "いいいいいいいいいいいいいいいいいいいいい");
                            System.out.println(deleteitem);
                            MyOpenHelper helper = new MyOpenHelper(LocationActivity.this);
                            SQLiteDatabase db = helper.getWritableDatabase();
                            Cursor c = db.rawQuery(sql, null);
                            c.moveToFirst();
                            onStart();
                        }
                    }
                });
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });
    
[/code]


CC BY-SA 3.0
2017-05-06T06:43:02.053
34480
2021-03-07T05:01:33.620
2021-03-07T05:01:33.620
3060
22972
question
java android
AndroidでSpinnerでLongClick を感知させる方法はありますか？


Spinnerが、LongCLickできないことがわかりました。

単純な結果となりましたが、質問内容の目的は、満たされましたので、解決済みとさせていただきます


CC BY-SA 3.0
2017-05-08T04:23:19.617
34538
2017-05-08T04:23:19.617
22972
34480
answer