SQLiteを利用し、editTextに入力した内容をListviewに表示させたいです。
ですがエラーコードが下記の通り出てしまい、上手くいきません。
エラー内容を調べてみたのですがよく理解できなかったので、
ご教授頂けないでしょうか?
■エラーコード
Error:(42, 17) エラー: クラス MainActivityのメソッド saveDataは指定された型に適用できません。
期待値: String,String
検出値: ListView
理由: 実引数リストと仮引数リストの長さが異なります
Error:(55, 49) エラー: シンボルを見つけられません
シンボル: 変数 txtStr
場所: クラス MainActivity
Error:(57, 31) エラー: シンボルを見つけられません
シンボル: 変数 txtStr
場所: クラス MainActivity
Error:(63, 22) エラー: シンボルを見つけられません
シンボル: メソッド setText(String)
場所: タイプListViewの変数 listview_txt1
以下ソースです。
MainActiviy,MainActiviy,content_main.xmlの3ファイルを記載しました。
よろしくお願いします。
■MainActiviy
java
1package jp.androidbook.myapp_dbpractice2; 2 3import android.database.sqlite.SQLiteDatabase; 4import android.os.Bundle; 5import android.support.design.widget.FloatingActionButton; 6import android.support.design.widget.Snackbar; 7import android.support.v7.app.AppCompatActivity; 8import android.support.v7.widget.Toolbar; 9import android.view.View; 10import android.view.Menu; 11import android.view.MenuItem; 12import android.widget.Button; 13import android.widget.EditText; 14import android.widget.ListView; 15import android.widget.TextView; 16import android.widget.Toast; 17 18public class MainActivity extends AppCompatActivity { 19 20 EditText edit_text1; 21 Button button1; 22 ListView listview_txt1; 23 24 MyDbHelper myDbHelper; 25 SQLiteDatabase myDB; 26 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.activity_main); 31 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 32 setSupportActionBar(toolbar); 33 34 edit_text1 = (EditText) findViewById(R.id.edit_text1); 35 button1 = (Button) findViewById(R.id.button1); 36 listview_txt1 = (ListView) findViewById(R.id.listview_txt1); 37 38 button1.setOnClickListener(new View.OnClickListener() { 39 @Override 40 public void onClick(View v) { 41 String txtStr = edit_text1.getText().toString(); 42 saveData(listview_txt1); 43 } 44 }); 45 46 // ヘルパーのインスタンス作成。 47 myDbHelper = new MyDbHelper(getApplicationContext()); 48 // getWritableDatabase()を使用してデータベースを開き、SQLiteDatabaseのインスタンス取得 49 myDB = myDbHelper.getWritableDatabase(); 50 51 setData(); 52 } 53 54 private void saveData(String titleStr, String detailStr) { 55 Toast.makeText(getApplicationContext(), txtStr + "を保存します", Toast.LENGTH_SHORT).show(); 56 // DB処理を行う 57 myDbHelper.insertData(txtStr, myDB); 58 setData(); 59 } 60 61 private void setData(){ 62 String result = myDbHelper.showData(myDB); 63 listview_txt1.setText(result); 64 } 65 66 67 @Override 68 public boolean onCreateOptionsMenu(Menu menu) { 69 getMenuInflater().inflate(R.menu.menu_main, menu); 70 return true; 71 } 72 73 @Override 74 public boolean onOptionsItemSelected(MenuItem item) { 75 int id = item.getItemId(); 76 77 if (id == R.id.action_settings) { 78 return true; 79 } 80 81 return super.onOptionsItemSelected(item); 82 } 83} 84 85
■MyDbHelper
java
1package jp.androidbook.myapp_dbpractice2; 2 3import android.content.ContentValues; 4import android.content.Context; 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.database.sqlite.SQLiteOpenHelper; 8 9 10public class MyDbHelper extends SQLiteOpenHelper { 11 12 //フィールドの宣言 13 static final String DB = "mydatabase.db"; 14 static final int DB_VERSION = 1; 15 static final String DB_TABLE = "mytable"; 16 static final String CREATE_TABLE = "create table " + DB_TABLE + " ( _id integer primary key autoincrement, edit_text1 );"; 17 static final String DROP_TABLE = "drop table mytable;"; 18 19 20 //コンストラクタ 21 public MyDbHelper(Context context) { 22 super(context, DB, null, DB_VERSION); 23 } 24 25 public void insertData(String txtStr, SQLiteDatabase myDB) { 26 //コンテントバリュー(データベースに保管するデータをまとめる)インスタンスの作成 27 ContentValues values = new ContentValues(); 28 29 //コンテントバリューへの値の設定 30 values.put("txt", txtStr); 31 32 //insertによるレコードの追加 第1引数…テーブル名、第2引数…nullコラムハック、第3引数…コンテントバリュー 33 myDB.insert(DB_TABLE, null, values); 34 } 35 36 37 public String showData(SQLiteDatabase myDB) { 38 String result = ""; 39 40 // レコードを検索してカーソルを作成 41 Cursor cursor = myDB.query(DB_TABLE, new String[] { "_id","txt" },null, null, null, null, null, null); 42 43 // カーソルから値を取り出す 44 while (cursor.moveToNext()) { 45 String str = cursor.getString(cursor.getColumnIndex("_id")) + "," 46 + cursor.getString(cursor.getColumnIndex("txt")) + "\n"; 47 result = result + str; 48 } 49 cursor.close(); 50 return result; 51 } 52 53 54 //データベース作成処理 55 public void onCreate(SQLiteDatabase db) { 56 db.execSQL(CREATE_TABLE); 57 } 58 59 //データベース更新処理 60 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 61 db.execSQL(DROP_TABLE); 62 onCreate(db); 63 } 64} 65
■content_main.xml
xml
1 2<?xml version="1.0" encoding="utf-8"?> 3<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:app="http://schemas.android.com/apk/res-auto" 5 xmlns:tools="http://schemas.android.com/tools" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:paddingBottom="@dimen/activity_vertical_margin" 9 android:paddingLeft="@dimen/activity_horizontal_margin" 10 android:paddingRight="@dimen/activity_horizontal_margin" 11 android:paddingTop="@dimen/activity_vertical_margin" 12 app:layout_behavior="@string/appbar_scrolling_view_behavior" 13 tools:context="jp.androidbook.myapp_dbpractice2.MainActivity" 14 android:orientation="vertical" 15 tools:showIn="@layout/activity_main"> 16 17 <EditText 18 android:id="@+id/edit_text1" 19 android:layout_width="match_parent" 20 android:layout_height="wrap_content" 21 android:hint="テキスト入力"/> 22 <Button 23 android:id="@+id/button1" 24 android:layout_width="match_parent" 25 android:layout_height="wrap_content" 26 android:text="保存"/> 27 <ListView 28 android:id="@+id/listview_txt1" 29 android:layout_width="wrap_content" 30 android:layout_height="wrap_content" 31 android:layout_marginTop="10dp" 32 android:text="ここにDBのデータが表示されます。" /> 33 34</LinearLayout> 35
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。