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

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

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

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

Q&A

解決済

1回答

431閲覧

android listviewにデータベースから正しく値をとってこれない

makioo

総合スコア28

Android

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

0グッド

0クリップ

投稿2018/09/02 14:49

編集2018/09/26 00:18

Activity

import android.content.Context; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button newCreate; private ListView listitem; private List<DtoItem> items; private Button allDelete; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); newCreate = (Button)findViewById(R.id.button); newCreate.setOnClickListener(this); listitem = (ListView)findViewById(R.id.todolistview); allDelete = (Button)findViewById(R.id.allDelete); allDelete.setOnClickListener(this); items = DaoItem.findAll(getApplicationContext()); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); for(DtoItem item:items){ Log.d("Log : ", String.valueOf(item.title)); adapter.add(item.title); } listitem.setAdapter(adapter); } public void onClick(View v) { if(v==newCreate){ Intent intent = new Intent(this,NewCreateActivity.class); startActivity(intent); } if(v == allDelete){ DaoItem.alldelete(getApplicationContext()); items = DaoItem.findAll(getApplicationContext()); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); for(DtoItem item:items){ adapter.add(String.valueOf(item.id)); } listitem.setAdapter(adapter); } } }

このアプリを実行すると

Log :: android.support.v7.widget.AppCompatTextView{f523cad V.ED..... ........ 0,26-216,83 #7f0b007a app:id/textTitle}

となりデータベースから値がとってこれません。

itemはid,title,contentsを持っており、idでは正しく表示されました。

データベースからとってくるとこのメソッド

public static List<DtoItem> findAll(Context context) { SQLiteDatabase db = getReadableDB(context); // データベース取得 List<DtoItem> listItem = new ArrayList<DtoItem>(); Cursor cursor = db.rawQuery("select * from " + TABLE_NAME + " order by " + COLUMN_ID, null); if (cursor.moveToFirst()) { do { DtoItem item = new DtoItem(); item.id = cursor.getLong(0); item.title= cursor.getString(1); item.contents = cursor.getString(2); item.date = cursor.getString(3); listItem.add(item); } while (cursor.moveToNext()); } cursor.close(); return listItem; }
public static long insert(Context context, DtoItem item) { SQLiteDatabase db = getWritableDB(context); // データベース取得 ContentValues values = new ContentValues(); values.put(COLUMN_TITLE, item.title); values.put(COLUMN_CONTENTS, item.contents); values.put(COLUMN_DATE,item.date); return db.insert(TABLE_NAME, null, values); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

データベースのtitleに値を入れるときにTextView#getText()の値ではなくTextView#toString()の値を入れていませんか?

このアプリを実行すると

Log :: android.support.v7.widget.AppCompatTextView{f523cad V.ED..... ........ 0,26-216,83 #7f0b007a app:id/textTitle}
となりデータベースから値がとってこれません。

android.support.v7.widget.AppCompatTextView{f523cad V.ED..... ........ 0,26-216,83 #7f0b007a app:id/textTitle}の部分は、AppCompatTextView#toString()を呼び出すとでます。
つまり値が入っていないのではなく、"TextViewを文字列で表したもの"が入っているのではないでしょうか。

投稿2018/09/03 11:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

makioo

2018/09/03 12:50

たしかにそうなっていました。直したところ何も表示されなくなりました... ``` item.title = textTitle.getText().toString(); item.contents = textContents.getText().toString(); ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問