【Android】ListViewの長押しでダイアログを表示する方法
本稿ではListViewを長押しした時に削除確認ダイアログを表示後に、
「はい」を押せば選択したListViewを削除し
「いいえ」を押せば削除しない実装の方法を説明致します。
onItemLongClickにダイアログ表示処理を実装する
ListViewを長押しした時にコールされるメソッドonItemLongClickにダイアログ表示の実装をしていきます。
下記のコードをご覧ください。
//リスト項目を長押しした時の処理 listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { /** * @param parent ListView * @param view 選択した項目 * @param position 選択した項目の添え字 * @param id 選択した項目のID */ public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) { AlertDialog.Builder builder = new AlertDialog.Builder(ListActivity.this); builder.setTitle(getString(R.string.dialog_title)) .setMessage(getString(R.string.dialog_message)) .setPositiveButton(getString(R.string.dialog_positive), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 選択されたビューを取得 TwoLineListItemを取得した後、text2の値を取得する TwoLineListItem two = (TwoLineListItem) view; TextView idTextView = (TextView) two.getText2(); String idStr = (String) idTextView.getText(); // 長押しした項目をデータベースから削除 SQLiteDatabase db = helper.getWritableDatabase(); try { db.execSQL("DELETE FROM MEMO_TABLE WHERE uuid = '" + idStr + "'"); } finally { db.close(); } // remove item from ArrayList memoList.remove(position); // update ListView simpleAdapter.notifyDataSetChanged(); Toast.makeText(ListActivity.this, "削除しました", Toast.LENGTH_SHORT).show(); } }) .setNegativeButton(getString(R.string.dialog_negative), null) .setCancelable(true); // show dialog builder.show(); // trueにすることで通常のクリックイベントを発生させない return true; } });
スポンサーリンク