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

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

新規登録して質問してみよう
ただいま回答率
85.50%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

646閲覧

SQLiteにタイトルとメッセージの保存内容を取り出したい

Eston

総合スコア67

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

1クリップ

投稿2020/05/12 11:58

編集2020/05/12 13:35

いつもお世話になっております

現在、こちらのリンクを参考に、SQLiteを使用したメモアプリを作成しています。

Titleとmessageを入力したあと、add_buttonを押すとMainActivityに戻るのですが、入力されたtitleとmessageがRecycularView表示されません

MainActivityのSQLiteから取り出して表示する部分に問題があるのでしょうか?

初歩的なミスを見逃していたらすみませんが、ご助力いただけると幸いです。

全体のリンク

↓InsertActivity
InsertActivity

MainActivity

1package com.example.noteapp; 2 3import androidx.annotation.Nullable; 4import androidx.appcompat.app.AlertDialog; 5import androidx.appcompat.app.AppCompatActivity; 6import androidx.recyclerview.widget.LinearLayoutManager; 7import androidx.recyclerview.widget.RecyclerView; 8 9import android.content.DialogInterface; 10import android.content.Intent; 11import android.database.Cursor; 12import android.os.Bundle; 13import android.view.Menu; 14import android.view.MenuInflater; 15import android.view.MenuItem; 16import android.view.View; 17import android.widget.ImageView; 18import android.widget.TextView; 19 20import com.google.android.material.floatingactionbutton.FloatingActionButton; 21 22import java.util.ArrayList; 23 24public class MainActivity extends AppCompatActivity { 25 26 RecyclerView recyclerView; 27 FloatingActionButton add_button; 28 ImageView empty_imageview; 29 TextView no_data; 30 31 MyDatabaseHelper myDB; 32 ArrayList<String> note_id, note_title, note_message; 33 CustomAdapter customAdapter; 34 35 @Override 36 protected void onCreate(Bundle savedInstanceState) { 37 super.onCreate(savedInstanceState); 38 setContentView(R.layout.activity_main); 39 40 recyclerView = findViewById(R.id.recyclerView); 41 add_button = findViewById(R.id.add_button2); 42 empty_imageview = findViewById(R.id.empty_imageview); 43 no_data = findViewById(R.id.no_data); 44 add_button.setOnClickListener(new View.OnClickListener() { 45 @Override 46 public void onClick(View view) { 47 Intent intent = new Intent(MainActivity.this, InsertActivity.class); 48 startActivityForResult(intent, 1); 49 } 50 }); 51 52 myDB = new MyDatabaseHelper(MainActivity.this); 53 note_id = new ArrayList<>(); 54 note_title = new ArrayList<>(); 55 note_message = new ArrayList<>(); 56 57 storeDataInArrays(); 58 59 CustomAdapter customAdapter = new CustomAdapter(MainActivity.this, this, note_id, note_title, note_message); 60 recyclerView.setAdapter(customAdapter); 61 recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); 62 } 63 64 @Override 65 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 66 super.onActivityResult(requestCode, resultCode, data); 67 if(requestCode == 1){ 68 recreate(); 69 } 70 } 71 72 void storeDataInArrays(){ 73 Cursor cursor = myDB.readAllData(); 74 if(cursor.getCount() == 0){ 75 empty_imageview.setVisibility(View.VISIBLE); 76 no_data.setVisibility(View.VISIBLE); 77 }else{ 78 while (cursor.moveToNext()){ 79 note_id.add(cursor.getString(0)); 80 note_title.add(cursor.getString(1)); 81 note_message.add(cursor.getString(2)); 82 } 83 empty_imageview.setVisibility(View.GONE); 84 no_data.setVisibility(View.GONE); 85 } 86 } 87 88 @Override 89 public boolean onCreateOptionsMenu(Menu menu) { 90 MenuInflater inflater = getMenuInflater(); 91 inflater.inflate(R.menu.my_menu, menu); 92 return super.onCreateOptionsMenu(menu); 93 } 94 95 @Override 96 public boolean onOptionsItemSelected(MenuItem item) { 97 if(item.getItemId() == R.id.delete_all){ 98 confirmDialog(); 99 } 100 return super.onOptionsItemSelected(item); 101 } 102 103 void confirmDialog(){ 104 AlertDialog.Builder builder = new AlertDialog.Builder(this); 105 builder.setTitle("Delete All?"); 106 builder.setMessage("Are you sure you want to delete all Data?"); 107 builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 108 @Override 109 public void onClick(DialogInterface dialogInterface, int i) { 110 MyDatabaseHelper myDB = new MyDatabaseHelper(MainActivity.this); 111 myDB.deleteAllData(); 112 //Refresh Activity 113 Intent intent = new Intent(MainActivity.this, MainActivity.class); 114 startActivity(intent); 115 finish(); 116 } 117 }); 118 builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 119 @Override 120 public void onClick(DialogInterface dialogInterface, int i) { 121 122 } 123 }); 124 builder.create().show(); 125 } 126} 127

MyDatabaseHelper

1package com.example.noteapp; 2 3import android.content.ContentValues; 4import android.content.Context; 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.database.sqlite.SQLiteOpenHelper; 8import android.widget.Toast; 9 10import androidx.annotation.Nullable; 11 12class MyDatabaseHelper extends SQLiteOpenHelper { 13 14 private Context context; 15 private static final String DATABASE_NAME = "note.db"; 16 private static final String TABLE_NAME = "my_note"; 17 private static final String COLUMN_ID = "_id"; 18 private static final String COLUMN_TITLE = "title"; 19 private static final String COLUMN_MESSAGE = "message"; 20 21 private static final int DATABASE_VERSION = 1; 22 23 MyDatabaseHelper(@Nullable Context context) { 24 super(context, DATABASE_NAME, null, DATABASE_VERSION); 25 this.context = context; 26 } 27 28 @Override 29 public void onCreate(SQLiteDatabase db) { 30 String query = "CREATE TABLE " + TABLE_NAME + 31 " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 32 COLUMN_TITLE + " TEXT, " + 33 COLUMN_MESSAGE + " TEXT);"; 34 db.execSQL(query); 35 } 36 @Override 37 public void onUpgrade(SQLiteDatabase db, int i, int i1) { 38 db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 39 onCreate(db); 40 } 41 42 void addNote(String title, String message){ 43 SQLiteDatabase db = this.getWritableDatabase(); 44 ContentValues cv = new ContentValues(); 45 46 cv.put(COLUMN_TITLE, title); 47 cv.put(COLUMN_MESSAGE, message); 48 49 long result = db.insert(TABLE_NAME,null, cv); 50 if(result == -1){ 51 Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show(); 52 }else { 53 Toast.makeText(context, "Added Successfully!", Toast.LENGTH_SHORT).show(); 54 } 55 } 56 57 Cursor readAllData(){ 58 String query = "SELECT * FROM " + TABLE_NAME; 59 SQLiteDatabase db = this.getReadableDatabase(); 60 61 Cursor cursor = null; 62 if(db != null){ 63 cursor = db.rawQuery(query, null); 64 } 65 return cursor; 66 } 67 68 void updateData(String row_id, String title, String message){ 69 SQLiteDatabase db = this.getWritableDatabase(); 70 ContentValues cv = new ContentValues(); 71 cv.put(COLUMN_TITLE, title); 72 cv.put(COLUMN_MESSAGE, message); 73 74 long result = db.update(TABLE_NAME, cv, "_id=?", new String[]{row_id}); 75 if(result == -1){ 76 Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show(); 77 }else { 78 Toast.makeText(context, "Updated Successfully!", Toast.LENGTH_SHORT).show(); 79 } 80 81 } 82 83 void deleteOneRow(String row_id){ 84 SQLiteDatabase db = this.getWritableDatabase(); 85 long result = db.delete(TABLE_NAME, "_id=?", new String[]{row_id}); 86 if(result == -1){ 87 Toast.makeText(context, "Failed to Delete.", Toast.LENGTH_SHORT).show(); 88 }else{ 89 Toast.makeText(context, "Successfully Deleted.", Toast.LENGTH_SHORT).show(); 90 } 91 } 92 93 void deleteAllData(){ 94 SQLiteDatabase db = this.getWritableDatabase(); 95 db.execSQL("DELETE FROM " + TABLE_NAME); 96 } 97 98}

InsertActivity

1package com.example.noteapp; 2 3import android.os.Bundle; 4import android.view.View; 5import android.widget.Button; 6import android.widget.EditText; 7import android.widget.MultiAutoCompleteTextView; 8 9import androidx.appcompat.app.AppCompatActivity; 10 11 12public class InsertActivity extends AppCompatActivity { 13 14 EditText title_input; 15 Button add_button; 16 //MultiAutoCompleteTextView message = (MultiAutoCompleteTextView)findViewById(R.id.me); 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 //final MultiAutoCompleteTextView message = (MultiAutoCompleteTextView)findViewById(R.id.me); 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_insert); 23 24 title_input = findViewById(R.id.title_input2); 25 //final View message_input = findViewById(R.id.me); 26 add_button = findViewById(R.id.add_button); 27 add_button.setOnClickListener(new View.OnClickListener() { 28 @Override 29 public void onClick(View view) { 30 final MultiAutoCompleteTextView message_input = (MultiAutoCompleteTextView)findViewById(R.id.me); 31 MyDatabaseHelper myDB = new MyDatabaseHelper(InsertActivity.this); 32 myDB.addNote(title_input.getText().toString().trim(), 33 message_input.toString().trim()); 34 } 35 }); 36 } 37}

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

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

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

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

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

m.ts10806

2020/05/12 12:20

保存されたかどうかはSQLiteに直にSELECT投げてみれば分かるのでは?
m.ts10806

2020/05/12 12:21

つまり「思う」のではなく「ない」と言い切れる証拠を集めましょう。
Eston

2020/05/12 12:27

修正依頼、ありがとうございます。確認いたします
guest

回答1

0

ベストアンサー

「全体のリンク」というのがご自身が作成したものなのでしょうか?

そこがはっきりしないのですが、とりあえずそれをダウンロードしたものを見てみましたが、InsertActivity.javaにあった軽微な誤りをいくつか修正すれば(修正しないとアプリが落ちる)、メモを記録してMainActivityに戻ることはできるようです。SQLiteにも正しく記録されているようで、アプリを再起動すれば記録したメモは正常に呼び戻されているように思えます。

java

1public class InsertActivity extends AppCompatActivity { 2 3 EditText title_input; 4 Button add_button; 5 MultiAutoCompleteTextView message; // メソッド外でfindViewById()を用いることはできない 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_insert); 11 12 message = findViewById(R.id.me); // ここで代入 13 title_input = findViewById(R.id.title_input); // title_input2ではなくtitle_inputの誤りでは 14 add_button = findViewById(R.id.add_button);

投稿2020/05/12 14:57

編集2020/05/12 15:01
keicha_hrs

総合スコア6766

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

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

Eston

2020/05/12 15:34

親切な回答と丁寧な説明をありがとうございます。 「全体のリンク」は自分で作成したものですが、正確に明記せずに申し訳ありません。 細かなエラー(稚拙なミステイク)が多く反省しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問