현재 간단한 응용 프로그램 퀴즈를 만들려고합니다. 각 응용 프로그램에 4 개의 답변이 첨부 된 이미지가 있습니다. 내가 방법을 발견했습니다 Chuck Application Part 1안드로이드 응용 프로그램 폴더에서 이미지 경로 저장 및 검색 미리 생성 된 SQLite 데이터베이스 및 이미지보기로 이미지 설정
: 나는
지금까지 내가이 튜토리얼 여기에 각 질문 구유에 이미지없이 질문을하는 방법을 알아낼 수있는 데이터베이스에 저장하는 약 100 ++ 이미지가 아래의 링크에서 SQLite 데이터베이스의 텍스트 필드에 대한 경로를 하드 코딩하여 만듭니다.
Saving resources path in SQLite
은 위의 링크에 따르면, 그는
그것이 사실이라면,이다, 그는 SQLite는 데이터베이스 내부에 텍스트 필드에 "R.drawable.picture1"를 입력하여 이미지의 참조를 절약 할 것을 주장 올바른 방법 (드로어 블 폴더에 이미지를 저장하고 텍스트 필드에 경로를 쓰는 방법)? 그 다음이 아니라면 내가 이미지 경로 데이터베이스에서 필드를 취득하기위한 (세터와 게터 방법 설정)을 구성 어떻게
?
, 그렇게 할 수있는 올바른 방법과 나는를 설정하는 방법 이미지 뷰 경로?
어떤 도움 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)
나는 데이터베이스에서 arraylist를 가져 와서 그 사실을 깨달았습니다. 오 여기 난 단지 DB에 이미지 이름을 저장 한 다음 context.getResources().getIdentifier()
와 자원 식별자를 얻을 것 내 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;
}
ur 샘플 퀴즈 앱의 소스 코드를 공유 할 수 있습니까? –