ArryList를 사용해서 설문조사 하는 프로그램을 만들려고 하는데, 자꾸 죽어버리네요ㅠ
이 부분이 버튼을 눌렀을때 질문이 나와야 하는 부분입니다.
소스입니다..
-----------------------------------------------------------------------------
package com.app.App1;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
public class start1 extends Activity implements OnClickListener{
ArrayList<Question> questionList1;
ArrayList<Question> questionList2;
int question_number;
ArrayList<Integer> randomNumbers;
TextView tv;
Button btn1;
Button btn2;
int question_number_last = 15;
int user = 1;
int result = 0;
String resultDetail;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start1);
questionList1 = new ArrayList<Question>();
questionList2 = new ArrayList<Question>();
question_number = 0;
Log.i("start1.java", "--------------------------------------------------------" );
ImageButton btn4 = (ImageButton)findViewById(R.id.left);
btn4.setOnClickListener(this);
LoadData();
// 최초의 실행 문제
tv = (TextView)findViewById(R.id.question);
btn1 = (Button)findViewById(R.id.cho1);
btn2 = (Button)findViewById(R.id.cho2);
Question q = questionList1.get(question_number);
tv.setText(q.getQuestion());
btn1.setText(q.getChoice1());
btn2.setText(q.getChoice2());
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
public void LoadData() {
try {
InputStream inputStream = this.getResources().openRawResource(
R.raw.data);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream, "euc-kr"));
String buf = "";
String[] strings = null;
String number = "";
String cho1 = "";
String cho2 = "";
String question = "";
Random rnd = new Random();
while ((buf = bufferedReader.readLine()) != null) {
strings = buf.split(",");
number = strings[0].trim();
cho1 = strings[1].trim();
cho2 = strings[2].trim();
question = strings[3].trim();
int index = 0;
if(questionList1.size()>1)
index = rnd.nextInt(questionList1.size()-1);
else
index = 0;
questionList1.add(index, new Question(number, cho1, cho2, question));
Log.i("start1.java", "[" + number + "] " + question );
}
Log.i("start1.java", "--------------------------------------------------------" );
Iterator<Question> itr2 = questionList1.iterator();
while(itr2.hasNext()) {
Question q = (Question)itr2.next();
Log.i("start1.java", "[" + q.getNum() + "] " + q.getQuestion() );
}
Iterator<Question> itr = questionList1.iterator();
while(itr.hasNext()) {
Question q = (Question)itr.next();
questionList2.add(q);
}
} catch (Exception e) {
Log.e(getClass().getSimpleName(), "파일 읽기 실패");
}
}
private void calResult(){
int r=0;
String rd = "결과 :";
Question q1;
Question q2;
for (int i = 0; i < question_number_last; i++){
q1 = questionList2.get(i);
q2 = questionList2.get(i);
if( q1.getAnswer() == q2.getAnswer()){
r ++;
rd = rd + "\n" + q1.getQuestion() + ":\n " + q1.getUserChoice() ;
}
}
result = r * 100 / question_number_last ;
resultDetail = rd;
Log.i("start", "r : " + result );
Log.i("start", "rd : " + resultDetail );
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
}
-------------------------------------------------------------------------------------------
그리고 LogCat에서 나는 오류 메시지 입니다.
=======================================================================================================================
06-18 14:22:46.416: DEBUG/AndroidRuntime(386): Shutting down VM
06-18 14:22:46.416: WARN/dalvikvm(386): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): FATAL EXCEPTION: main
06-18 14:22:46.438: ERROR/AndroidRuntime(386): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.App1/com.app.App1.start1}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.os.Handler.dispatchMessage(Handler.java:99)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.os.Looper.loop(Looper.java:123)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at java.lang.reflect.Method.invokeNative(Native Method)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at java.lang.reflect.Method.invoke(Method.java:521)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at dalvik.system.NativeStart.main(Native Method)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at java.util.ArrayList.get(ArrayList.java:311)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at com.app.App1.start1.onCreate(start1.java:56)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-18 14:22:46.438: ERROR/AndroidRuntime(386): ... 11 more
=================================================================================================================
그리고 LogCat을 따라갔을 때 나는 오류부분 입니다.sssss.bmp




<meta http-equiv="content-type" content="text/html; charset=utf-8">indexOutOfBoundsException: Invalid index 0, size is 0
이거는 리스트에 아무것도 없는데 뭔가 값을 받으려고 할 때 나는 에러에요 ..
<meta http-equiv="content-type" content="text/html; charset=utf-8">questionList1.add(index, new Question(number, cho1, cho2, question));
여기서 값이 잘 안들어 가는거 같은데
while문 조건은 충족하나요??
얼핏봐서 ^^;;;