前提・実現したいこと
AndroidStudio3.5.3使用。言語はjava。
魚図鑑の様なアプリを開発しようとしています。
発生している問題・エラーメッセージ
DB(SQL)にある魚の情報を、SimpleCursorAdapterを使用する事でListViewで表示しようと試みました。
その結果、名前の部分は表示されるのですが、画像部分が表示されません。
(アジの左に本来表示されるべき画像が表示されていません。)
デバッグ中に以下のメッセージがログに表示されています。
解決策はありますでしょうか?
E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: R.drawable.fish_hirame (No such file or directory)
該当のソースコード
ZukanOpenHelper
java
1package… 2 3import… 4 5public class ZukanOpenHelper extends SQLiteOpenHelper { 6 7 public static final String DB_NAME="getFish.db"; 8 public static final int DB_VERSION= 11; 9 10 public static final String CREATE_TABLE= 11 "create table "+ ZukanContract.Zukan.TABLE_NAME+" (" 12 +"_id integer primary key autoincrement, " 13 +ZukanContract.Zukan.COL_NAME+" text, "+ZukanContract.Zukan.COL_IMAGE+" integer, " 14 +ZukanContract.Zukan.COL_DESCRIPTION+" text, "+ZukanContract.Zukan.COL_LOC+" text, "+ ZukanContract.Zukan.COL_CAUGHT+" integer)"; 15 public static final String INIT_TABLE= 16 "insert into "+ ZukanContract.Zukan.TABLE_NAME+" (name,image, description, loc, caught) values "+"('アジ','R.drawable.fish_aji','説明文','海','0')"; 17 public static final String DROP_TABLE= 18 "drop table if exists " + ZukanContract.Zukan.TABLE_NAME; 19 20 21 public ZukanOpenHelper(Context c){ 22 super(c,DB_NAME,null,DB_VERSION); 23 } 24 25 @Override 26 public void onCreate(SQLiteDatabase db) { 27 db.execSQL(CREATE_TABLE); 28 db.execSQL(INIT_TABLE); 29 } 30 31 @Override 32 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 33 db.execSQL(DROP_TABLE); 34 onCreate(db); 35 } 36 } 37
MainActivity
java
1package… 2 3import … 4 5public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> { 6 7 private SimpleCursorAdapter adapter; 8 public final static String EXTRA_NAME = "com.school.zukanApp"; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main); 14 15 String[] from = {ZukanContract.Zukan.COL_NAME, ZukanContract.Zukan.COL_LOC, ZukanContract.Zukan.COL_IMAGE}; 16 int[] to = {R.id.name, R.id.loc, R.id.icon}; 17 18 adapter = new SimpleCursorAdapter(this, R.layout.list_item, null, from, to); 19 ListView myListView = (ListView) findViewById(R.id.myListView); 20 myListView.setAdapter(adapter); 21 22 getSupportLoaderManager().initLoader(0, null, this); 23 } 24 25 @NonNull 26 @Override 27 //起動と同時に loader起動 28 public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) { 29 String[] projection = { 30 ZukanContract.Zukan._ID, 31 ZukanContract.Zukan.COL_NAME, 32 ZukanContract.Zukan.COL_LOC, 33 ZukanContract.Zukan.COL_IMAGE}; 34 35 return new CursorLoader( 36 this, ZukanContentProvider.CONTENT_URI, projection, null, null, ZukanContract.Zukan._ID + " DESC"); 37 } 38 39 @Override 40 public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor data) { 41 adapter.swapCursor(data); 42 } 43 44 @Override 45 public void onLoaderReset(@NonNull Loader<Cursor> loader) { 46 adapter.swapCursor(null); 47 } 48} 49
list_item
xml
1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 android:padding = "16dp" 5 android:orientation="horizontal" 6 android:layout_width="match_parent" 7 android:layout_height="wrap_content"> 8 9 <ImageView 10 android:id="@+id/icon" 11 android:layout_width="0dp" 12 android:layout_height="match_parent" 13 android:layout_weight="1" 14 android:layout_marginRight="16dp" 15 android:src="@mipmap/ic_launcher_round" /> 16 17 <LinearLayout 18 android:layout_width="0dp" 19 android:layout_height="wrap_content" 20 android:layout_weight="5" 21 android:orientation="vertical"> 22 23 <TextView 24 android:id="@+id/name" 25 android:textSize="24sp" 26 android:layout_width="match_parent" 27 android:layout_height="wrap_content"/> 28 <TextView 29 android:id="@+id/loc" 30 android:textSize="16sp" 31 android:textColor="#999999" 32 android:layout_width="match_parent" 33 android:layout_height="wrap_content"/> 34 35 </LinearLayout> 36</LinearLayout>
補足情報
Java初心者であり、ドットインストールの「Androidでメモアプリを作ろう」を参考に作成しました。
回答1件
あなたの回答
tips
プレビュー