我目前正在嘗試做一個簡單的應用程序測驗,將有一個圖像附加到每個問題與4個答案,所以我有大約100 ++圖像數據庫中存儲存儲和檢索圖像路徑從android應用程序文件夾上預先創建SQLite數據庫和設置圖像到圖像視圖
到目前爲止,我可以計算出如何使問題不會對每個問題槽的形象在這裏本教程:Chuck Application Part 1
我已經找到了一條出路存儲圖像路徑是通過硬編碼SQLite數據庫中的文本字段的路徑從以下鏈接
Saving resources path in SQLite
根據上面的鏈接,他說,他在SQLite數據庫裏鍵入「R.drawable.picture1」文本字段保存圖像的參考,
如果這是真的,是它是正確的方式(通過將圖像保存在可繪製的文件夾中並將路徑寫入文本域)?如果它不是那麼什麼是這樣做的正確方法,
我如何構建映像路徑(設置setter和getter方法)從數據庫中獲取的領域?
和如何設置的一個ImageView的路徑?
任何幫助將理解的,三江源預先
UPDATE所以我從另一個連結如何使用一個字符串參考學習和我編輯下面的字符串,其中ImageI.getImage1();指的是我的數據庫中包含我的圖像名稱的一行
private void showImage() {
String imagea = ImageI.getImage1();
int imageResource = getResources().getIdentifier(imagea , "drawable", context.getPackageName());
ImageView gambar = (ImageView) findViewById(R.id.imagetest);
Drawable image = getResources().getDrawable(imageResource);
gambar.setImageDrawable(image);
}
但我總是收到一個力,我在哪裏做錯了?
到目前爲止,我已經試過在我的數據庫行寫入
R.Drawable.picture
Drawable/picture
picture
但沒有任何工程....
這是我的查詢
public List<ImageQuestions> getImageQuestionSet(int ingroup, int numQ) {
List<ImageQuestions> questionSet = new ArrayList<ImageQuestions>();
Cursor c = myDataBase.rawQuery("SELECT * FROM IMAGETEST WHERE INGROUP=" + ingroup +
" ORDER BY RANDOM() LIMIT " + numQ, null);
while (c.moveToNext()){
//Log.d("IMAGEQUESTIONS", "Images Found in DB: " + c.getString(1));
ImageQuestions I = new ImageQuestions();
I.setQuestion(c.getString(1));
I.setImage1(c.getString(2));
I.setAnswer(c.getString(3));
I.setOption1(c.getString(4));
I.setOption2(c.getString(5));
I.setGroup(ingroup);
questionSet.add(I);
}
return questionSet;
}
}
,這是我的日誌貓
07-18 03:28:41.283: W/dalvikvm(647): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
07-18 03:28:41.293: E/AndroidRuntime(647): FATAL EXCEPTION: main
07-18 03:28:41.293: E/AndroidRuntime(647): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
07-18 03:28:41.293: E/AndroidRuntime(647): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
07-18 03:28:41.293: E/AndroidRuntime(647): at java.util.ArrayList.get(ArrayList.java:311)
07-18 03:28:41.293: E/AndroidRuntime(647): at learning.everything.quiz.GamePlayI.getNextQuestion(GamePlayI.java:113)
07-18 03:28:41.293: E/AndroidRuntime(647): at learning.everything.BigAss.onCreate(BigAss.java:32)
07-18 03:28:41.293: E/AndroidRuntime(647): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-18 03:28:41.293: E/AndroidRuntime(647): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
我意識到它是由數據庫中的數組列表引起的Ø這裏是我的GamePlayI類
public class GamePlayI {
private List<ImageQuestions> questions = new ArrayList<ImageQuestions>();
public void setQuestions(List<ImageQuestions> questions) {
this.questions = questions;
}
public void addQuestions(ImageQuestions I) {
this.questions.add(I);
}
public List<ImageQuestions> getQuestions() {
return questions;
}
public ImageQuestions getNextQuestion() {
//get the question
//below is line 113\\
ImageQuestions next = questions.get(this.getRound());
//update the round number to the next round
this.setRound(this.getRound()+1);
return next;
}
}
public void setNumRounds(int numRounds) {
this.numRounds = numRounds;
}
public int getNumRounds() {
return numRounds;
}
你可以分享我們的樣品測驗應用程序的源代碼 –