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

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

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

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

Java

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

Android

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

Android Studio

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

Q&A

解決済

2回答

3867閲覧

sqlite内のデータをリスト表示(Listview上に表示)にできなくて困っています

hamusuke1

総合スコア12

SQLite

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

Java

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

Android

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

Android Studio

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

0グッド

1クリップ

投稿2016/04/22 05:56

編集2016/04/24 00:50

現在、ただのLinearLayout上にsqlite内のデータを表示させることは
できたのですが
それをlistview上に表示させようとするとうまくいきません。

実行すると
R.layout.activity_main3に移る瞬間で
問題が発生したため(アプリ名)を終了します。
となります。

Java

1 2Main3Activity.java↓ 3 4 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.support.v7.app.AppCompatActivity; 8import android.os.Bundle; 9import android.util.Log; 10import android.view.Menu; 11import android.view.MenuItem; 12import android.view.View; 13import android.widget.AdapterView; 14import android.widget.LinearLayout; 15import android.widget.ListView; 16import android.widget.SimpleCursorAdapter; 17import android.widget.TextView; 18 19public class Main3Activity extends AppCompatActivity { 20 21 ListView myListView; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main3);// setContentViewでlayout(show_database)を置く 27 28 29 LinearLayout layout = new LinearLayout(this); 30 layout.setOrientation(LinearLayout.VERTICAL); 31 32 setContentView(layout); *ここの部分を削除すると正常に動くようになりました。 33 34 35 myListView = (ListView)findViewById(R.id.itemListView); 36 37 MyOpenHelper helper = new MyOpenHelper(this); 38 39 SQLiteDatabase db = helper.getReadableDatabase(); 40 41 Cursor c = db.rawQuery 42 43 //表示するカラム名 44 String[] from = {"Shopname","_id"}; 45 //バインドするViewリソース 46 int[] to = {android.R.id.text1,android.R.id.text2}; 47 48 //adapter生成 49 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,c,from,to,0); 50 51 //bindして表示 52 myListView.setAdapter(adapter); 53 54 //クリックしたとき各行のデータ(特に_id)を取得 55 myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 56 @Override 57 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 58 59 //各要素を取得 60 String s1 = ((TextView) view.findViewById(android.R.id.text1)).getText().toString(); 61 String s2 = ((TextView) view.findViewById(android.R.id.text2)).getText().toString(); 62 63 Log.v("tama", "position=" + s1); 64 Log.v("tama", "position=" + s2); 65 } 66 }); 67 68 //loop(いらない) 69 while(c.moveToNext()){ 70 Log.v("tama", c.getString(c.getColumnIndex("Shopname"))); 71 } 72 73 } 74 75 76}

java

1activity_main3に移る際の 2logcat↓ 3 4 504-22 14:52:09.370 28578-28578/com.example.sample.liflogaplicationtukurinaosi W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41fc7ba8) 604-22 14:52:09.370 28578-28578/com.example.sample.liflogaplicationtukurinaosi E/AndroidRuntime﹕ FATAL EXCEPTION: main 7 Process: com.example.sample.liflogaplicationtukurinaosi, PID: 28578 8 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sample.liflogaplicationtukurinaosi/com.example.sample.liflogaplicationtukurinaosi.Main3Activity}: java.lang.NullPointerException 9 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 10 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 11 at android.app.ActivityThread.access$800(ActivityThread.java:135) 12 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 13 at android.os.Handler.dispatchMessage(Handler.java:102) 14 at android.os.Looper.loop(Looper.java:136) 15 at android.app.ActivityThread.main(ActivityThread.java:5017) 16 at java.lang.reflect.Method.invokeNative(Native Method) 17 at java.lang.reflect.Method.invoke(Method.java:515) 18 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 19 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 20 at dalvik.system.NativeStart.main(Native Method) 21 Caused by: java.lang.NullPointerException 22 at com.example.sample.liflogaplicationtukurinaosi.Main3Activity.onCreate(Main3Activity.java:82) 23 at android.app.Activity.performCreate(Activity.java:5231) 24 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 25 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 26            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 27            at android.app.ActivityThread.access$800(ActivityThread.java:135) 28            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 29            at android.os.Handler.dispatchMessage(Handler.java:102) 30            at android.os.Looper.loop(Looper.java:136) 31            at android.app.ActivityThread.main(ActivityThread.java:5017) 32            at java.lang.reflect.Method.invokeNative(Native Method) 33            at java.lang.reflect.Method.invoke(Method.java:515) 34            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 35            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 36            at dalvik.system.NativeStart.main(Native Method) 37

java

1activity_main3.xml 2 3<?xml version="1.0" encoding="utf-8"?> 4 5<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:orientation="vertical" > 9 10 <ListView 11 android:layout_height="wrap_content" 12 android:id="@+id/itemListView" 13 android:layout_width="match_parent" 14 android:layout_weight="1"/> 15 16 <LinearLayout 17 android:layout_height="wrap_content" 18 android:layout_width="match_parent"> 19 20 </LinearLayout> 21 22 <Button 23 android:id="@+id/deleteAll" 24 android:layout_width="match_parent" 25 android:layout_height="wrap_content" 26 android:text="全削除" 27 ></Button> 28 29</LinearLayout>

Debuggerのスクショです
Debuggerのスクショです

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

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

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

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

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

guest

回答2

0

ベストアンサー

ログを読みましょう。
このMain3Activityの、82行目でNullPointerExceptionが発生しています。
そこには何が記述されていますか?

また、コードは専用の記述方法があるのでそちらに修正してください。

投稿2016/04/22 06:19

yona

総合スコア18155

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

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

hamusuke1

2016/04/22 06:45

回答ありがとうございます。 コード変更いたしました! 82行目には myListView.setAdapter(adapter); が記述されています。 引き続きよろしくお願いします。
yona

2016/04/22 07:03

つぎはListViewがnullなのかAdapterがnullなのかを判断するためにmyListView.setAdapter(adapter);にブレークポイントを設置し、デバッグ実行をしてください。 どちらがnullなのかで対応が変わります。 あと、ログも同様にコード用の記述法でいいと思いますよ。
hamusuke1

2016/04/22 07:59

お世話になっております。 デバッグを実行して Debuggerのスクショを追加しました! よろしくお願いします。
yona

2016/04/22 08:07

お願いしますではなく、自分でも考えましょうね。 ListViewがnullになっているので考えられるのはfindViewByIdに使ったidが他のレイアウトに記載されている可能性があります。 レイアウトファイルを確認してください。
hamusuke1

2016/04/22 09:49

あまり考えずに質問してしまい、すみませんでした。 以後気を付けます。 それで レイアウトファイルを 確認したところ記載は見当たりませんでした。 上の回答者様の意見は何か参考になりますでしょうか?
yona

2016/04/22 10:21 編集

では、activity_main3にはitemListViewは存在するんですね? レイアウトファイルの追記をお願いします。
abs123

2016/04/22 10:33 編集

>記載は見当たりませんでした ?書いてなかったってこと? hamusuke1さん そんな会社に送るメールみたいな文言使わずに、 誰でもわかるような言葉で書いたほうがいいと思いますよ・・・
yona

2016/04/22 10:49

私のコメントも悪かったですね。 activity_main3.xmlにはid属性がitemListViewのViewが間違いなく存在していますか?
hamusuke1

2016/04/22 13:12

activity_main3.xmlを追記いたしました。 itemListViewは存在しています。 文字数の関係で上には追記しきれなかった残りのレイアウトファイルをここに書きます。 ``` activity_main2.xml↓ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:text="店舗名" /> <EditText android:id="@+id/editShopName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" android:ems="10" android:inputType="textPersonName" > </EditText> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/editShopName" android:text="料理名" /> <EditText android:id="@+id/editFood" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView4" android:ems="10" android:inputType="textPersonName" > </EditText> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/editComment" android:text="5つ星評価"></TextView> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ratingBar" android:layout_below="@+id/textView2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:text="0" android:id="@+id/ratingText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/ratingBar" android:layout_above="@+id/insert" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/editFood" android:text="コメント"/> <EditText android:id="@+id/editComment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView3" android:ems="10" android:inputType="textPersonName" /> <Button android:id="@+id/insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/ratingBar" android:text="登録" android:layout_marginTop="10dp" /> <Button android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ホームに戻る" android:onClick="onClick" android:layout_above="@+id/deleteAll" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"></Button> <Button android:id="@+id/dataBase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="外食リストを閲覧" android:onClick="onClick" android:layout_above="@+id/deleteAll" android:layout_toRightOf="@+id/btn_back" android:layout_alignParentRight="true" android:layout_alignParentEnd="true"></Button> <Button android:id="@+id/deleteAll" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="全削除" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"></Button> </RelativeLayout> ``` ``` activity_main.xml↓ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="250dp" android:layout_height="100dp" android:text="店舗登録" android:id="@+id/button1" android:textSize="30dp" android:layout_gravity="center_horizontal" android:layout_marginTop="60dp" android:onClick="onClick"/> <Button android:layout_width="250dp" android:layout_height="100dp" android:text="外食リスト" android:textSize="30dp" android:id="@+id/button2" android:layout_gravity="center_horizontal" android:layout_marginTop="60dp" android:onClick="onClick"/> </LinearLayout> </RelativeLayout> ```
yona

2016/04/22 13:58

なるほど、間違いなくitemListViewのidが含まれるレイアウトファイルからidを指定しているのにListViewがnullになる謎現象が発生していますね。 コードは間違いなく最新なんですよね?途中で別のレイアウトファイルをsetContentViewしていたりしないですよね?
hamusuke1

2016/04/24 00:36

最新のものだと思います。 全く同じプロジェクトをコピペで作り直して実行してみても同じ状況になりました。
hamusuke1

2016/04/24 00:48

すみません。。 いまMainActivity3.javaのソースを再確認したところ LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); の下にご指摘のあった setContentView(layout); という記述がありました。 こちらのソースでたまたまその部分が抜けていたという致命的なミスを犯してしまいました。 その部分をコメントアウトして実行してみたところ、無事リスト表示が実現できました。 ご協力、ありがとうございました!
yona

2016/04/24 01:27

笑 良かったです( ̄^ ̄)ゞ
guest

0

adapterのソースがないのでわかりませんが、adapterの中身が怪しい気がします。おそらくadapter内でCursor.getString()で取得した文字列をtextviewにセットしているのだと思いますが、このとき取得した文字列がnullなのではないでしょうか?

投稿2016/04/22 09:02

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hamusuke1

2016/04/22 09:48

回答ありがとうございます。 すみません、かなり初心者なもので イメージはつかめるのですが それはつまり、どう対処すればよいのでしょうか(><) アダプターは SimpleCursorAdapterというクラスを使用しました。 自作のアダプターではないので、中身の操作をどうすればよいのでしょうか。
退会済みユーザー

退会済みユーザー

2016/04/22 11:43

すいません。てっきり自作アダプターかと思ってしまいました。 少し調べて見たら,staroverflowに似たような質問がありました。アダプターにbindviewを実装して、その中のでそれぞれのtextviewに文字列を設定してやればいいのではないでしょうか?現在のソースだとtextviewがnullなのにtextviewの文字列を取得しようとしてヌルポになっているのだと思います。 以下参考urlです。 http://stackoverflow.com/questions/30780237/listview-with-custom-layout-for-hidden-fields
hamusuke1

2016/04/22 14:18

アダプター部のコードをこのように変更したものも試してみましたが 同じく 問題が発生しました となって強制終了しました。 コードに間違いなどがあれば、教えていただきたいです。 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,c,from,to,0) {@Override public void bindView(View view, Context context, Cursor cursor) { super.bindView(view, context, cursor); String Shopname = cursor.getString(cursor.getColumnIndex("Shopname")); String _id = cursor.getString(cursor.getColumnIndex("_id")); TextView tv = (TextView) view.findViewById(android.R.id.text1); tv.setText(Shopname); //here you can store your id on textview tag tv.setTag(_id); } }; //bindして表示 myListView.setAdapter(adapter); //クリックしたとき各行のデータ(特に_id)を取得 myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { TextView tv = ( TextView ) view . findViewById ( android . R . id . text1 ); String _id = tv . getTag (). toString (); } });
退会済みユーザー

退会済みユーザー

2016/04/22 14:37

そうですか。お役に立てずすいません。
hamusuke1

2016/04/24 00:48

ご協力、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問