質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

2814閲覧

メモ帳アプリでのカレンダー

nagahamaN

総合スコア6

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/08/31 02:28

前提・実現したいこと 

メモ帳アプリでのカレンダー機能を追加させたい。
一万字までとのこどですので分けて質問したいと思います

list.java

package com.android.nagahamashinpei.simplememo;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.TwoLineListItem;
import java.util.ArrayList;
import java.util.HashMap;

public class ListActivity extends AppCompatActivity {

// MemoOpenHelperクラスを定義 MemoOpenHelper helper = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); // データベースから値を取得する if(helper == null){ helper = new MemoOpenHelper(ListActivity.this); } // メモリストデータを格納する変数 final ArrayList<HashMap<String, String>> memoList = new ArrayList<>(); // データベースを取得する SQLiteDatabase db = helper.getWritableDatabase(); try { // rawQueryというSELECT専用メソッドを使用してデータを取得する Cursor c = db.rawQuery("select uuid, body from MEMO_TABLE order by id", null); // Cursorの先頭行があるかどうか確認 boolean next = c.moveToFirst(); // 取得した全ての行を取得 while (next) { HashMap<String,String> data = new HashMap<>(); // 取得したカラムの順番(0から始まる)と型を指定してデータを取得する String uuid = c.getString(0); String body = c.getString(1); if(body.length() > 10){ // リストに表示するのは10文字まで body = body.substring(0, 11) + "..."; } // 引数には、(名前,実際の値)という組合せで指定します 名前はSimpleAdapterの引数で使用します data.put("body",body); data.put("id",uuid); memoList.add(data); // 次の行が存在するか確認 next = c.moveToNext(); } } finally { // finallyは、tryの中で例外が発生した時でも必ず実行される // dbを開いたら確実にclose db.close(); } // Adapter生成 final SimpleAdapter simpleAdapter = new SimpleAdapter(this, memoList, // 使用するデータ android.R.layout.simple_list_item_2, // 使用するレイアウト new String[]{"body","id"}, // どの項目を new int[]{android.R.id.text1, android.R.id.text2} // どのidの項目に入れるか ); // idがmemoListのListViewを取得 ListView listView = (ListView) findViewById(R.id.memoList); listView.setAdapter(simpleAdapter); // リスト項目をクリックした時の処理 listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ /** * @param parent ListView * @param view 選択した項目 * @param position 選択した項目の添え字 * @param id 選択した項目のID */ public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // インテント作成 第二引数にはパッケージ名からの指定で、遷移先クラスを指定 Intent intent = new Intent(ListActivity.this, com.android.nagahamashinpei.simplememo.CreateMemoActivity.class); // 選択されたビューを取得 TwoLineListItemを取得した後、text2の値を取得する TwoLineListItem two = (TwoLineListItem)view;

// TextView idTextView = (TextView)two.findViewById(android.R.id.text2);
TextView idTextView = (TextView)two.getText2();
String idStr = (String) idTextView.getText();
// 値を引き渡す (識別名, 値)の順番で指定します
intent.putExtra("id", idStr);
// Activity起動
startActivity(intent);
}
});

// リスト項目を長押しクリックした時の処理 listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){ /** * @param parent ListView * @param view 選択した項目 * @param position 選択した項目の添え字 * @param id 選択した項目のID */ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { // 選択されたビューを取得 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(); } // 長押しした項目を画面から削除 memoList.remove(position); simpleAdapter.notifyDataSetChanged(); // trueにすることで通常のクリックイベントを発生させない return true; } }); /** * 新規作成するボタン処理 */ // idがnewButtonのボタンを取得 Button newButton = (Button) findViewById(R.id.newButton); // clickイベント追加 newButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // CreateMemoActivityへ遷移 Intent intent = new Intent(ListActivity.this, com.android.nagahamashinpei.simplememo.CreateMemoActivity.class); intent.putExtra("id", ""); startActivity(intent); } }); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takito

2018/08/31 02:43

「一万字までとのこどですので分けて質問したいと思います 」・・・質問スレッドが分かれてしまって全体が把握しづらく、回答が難しくなってますし、他の質問者にとっては大変迷惑です。ソースコードを共有できるサービスがありますのでそちらを利用し、質問は1つにしましょう。作成してしまったものは運営へ事情を説明して削除依頼を出してください。
Zuishin

2018/08/31 03:38

質問の意味がわかりません。カレンダー機能を追加しろという作業依頼ですか?
Zuishin

2018/08/31 03:49

質問はなるべく小さくしましょう。例えばメモ帳アプリに今日の日付を入れる機能が欲しいのであれば、「今日の日付を取得するには?」「日付を文字列に直すには?」という二つの質問になるはずで、メモ帳アプリは関係ないと思います。また、欲しいカレンダー機能がどういうものかも全く伝わりません。他人と話す時にはまず質問を整理して、その前提となる情報をしっかり伝えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問