Esempio n. 1
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hist);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // Intent intent = getIntent(); 遷移元からデータ引き継いでないので記述不要
    MySQLiteOpenHelper hlpr = new MySQLiteOpenHelper(getApplicationContext());
    mydb = hlpr.getReadableDatabase();
    Cursor mCursor =
        mydb.rawQuery(
            "select RegisterId, RegisterDate, ExecuteDate from alarmTalbe order by RegisterId desc",
            null);

    // 予約情報が1件もない場合_よい実装を考える。
    if (mCursor == null) {
      return;
    }
    // DBから取得したデータをListに詰める
    while (mCursor.moveToNext()) {
      RegisterBean bean = new RegisterBean();
      bean.setRegisterId(mCursor.getInt(mCursor.getColumnIndex("RegisterId")));
      bean.setRegisterDate(mCursor.getString(mCursor.getColumnIndex("RegisterDate")));
      bean.setExecuteDate(mCursor.getString(mCursor.getColumnIndex("ExecuteDate")));
      bean.setRegisterInfo(
          "予約No"
              + mCursor.getInt(mCursor.getColumnIndex("RegisterId"))
              + ":"
              + mCursor.getString(mCursor.getColumnIndex("ExecuteDate")));
      registerList.add(bean);
    }

    // ListView用に実行日だけ詰め替える
    final ArrayList<String> showList = new ArrayList<>();
    for (RegisterBean bean : registerList) {
      showList.add(bean.getRegisterInfo());
    }

    lview = (ListView) findViewById(R.id.lv);
    adapter =
        new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, showList);
    lview.setAdapter(adapter);

    // リスト項目をクリック
    lview.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
          String deleteId; // onItemClickの中で宣言すると、ダイアログ生成のonClickで変数が使用できない
          int position = -1;

          @Override
          public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
            ListView lv = (ListView) parent;

            deleteId = (String) lv.getItemAtPosition(pos); // 選択項目
            int index = deleteId.indexOf(":");
            deleteId = deleteId.substring(4, index);
            position = pos;

            // 確認ダイアログ生成
            AlertDialog.Builder alertDlg =
                new AlertDialog.Builder(HistActivity.this); // ここはgetApplicationContext()では動かない
            alertDlg.setTitle("削除確認");
            alertDlg.setMessage("指定した履歴を削除します。");
            alertDlg.setPositiveButton(
                "OK",
                new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int which) {

                    mydb.rawQuery(
                            "Delete From alarmTalbe Where RegisterId = ?", new String[] {deleteId})
                        .moveToFirst();
                    showList.remove(position);
                    adapter.notifyDataSetChanged();

                    // OK ボタンクリック処理
                    Toast.makeText(getApplicationContext(), "削除しました", Toast.LENGTH_LONG).show();

                    // ListViewからデータ削除
                    // adapter.remove(item);
                  }
                });
            alertDlg.setNegativeButton(
                "Cancel",
                new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int which) {
                    // Cancel ボタンクリック処理
                    Toast.makeText(getApplicationContext(), "Cancel押されました", Toast.LENGTH_LONG)
                        .show();
                  }
                });
            // 表示
            alertDlg.create().show();
          }
        });

    // 戻るボタン
    Button btn = (Button) this.findViewById(R.id.btnBack);
    btn.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            finish();
          }
        });
  }