2013-07-10 28 views
2

我目前正在嘗試做一個簡單的應用程序測驗,將有一個圖像附加到每個問題與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; 
} 
+0

你可以分享我們的樣品測驗應用程序的源代碼 –

回答

0

我只會在數據庫中保存圖像名稱,然後用context.getResources().getIdentifier()獲取資源標識符。檢查出this類似的問題。

+0

謝謝你的回答。你能更具體一點嗎?我怎樣才能做到這一點?有沒有辦法將context.getResources()。getIdentifier()放在遊標中? @SimonSays –

+0

也許我不完全理解你的問題。你想要1.從數據庫中獲取圖像名稱,2.從名稱中獲取圖像資源ID,以及3.將圖像資源設置爲ImageView。這不是你的文章中的SO鏈接麼?那麼究竟是什麼問題呢?你的意思是「把context.getResources()。getIdentifier()放在遊標中」?你不能把任何東西放在光標中?你想將標識符保存到數據庫?不要這樣做!標識符可以在您每次構建應用程序時更改。 – SimonSays

+0

我真的是新的機器人,所以請耐心解決我的問題,並糾正我,如果我錯了, 是的數字1,2,&3是正確的,我的問題是我不知道正確的方式這樣做,請無視我上面的評論,因爲當我發佈這個評論是我知道什麼get.Resources()。getIdentifier的時候,我學會了如何做數1,2和3,所以請檢查我編輯的問題@SimonSays –

相關問題