i am a newbie of android programming. Here i have some error that make me so confuse. I am developing an android app that require a database which is have value on it before user can use the app. Now i have that data on my .csv file and i want when the user first run the app, the data on my .csv file will imported and fill the value of database on SQLite.
I have searching and finding some pattern of code, but all of that doesn't work on my app. I don't know why its getting error "Unhandled Exception java.io.IOException". I don't know what happen, please master help me. Thanks before.
NB. this my code for MainActivity.java
public class MainActivity extends ActionBarActivity {
Button btnKet1, btnKet2, btnKet3, btnKet4, btnNext;
TextView txtKet;
SQLiteDatabase db;
RadioButton rd1, rd2, rd3, rd4;
public static String answer;
Integer[] arr = new Integer[10];
public int a,b,c,d;
String[]jawab=new String[10];
int count = 0;
public String dom;
DatabaseHelper dbH = new DatabaseHelper(this);
public String Id, A, B, C, D, aExplain, bExplain, cExplain, dExplain;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnKet1 = (Button)findViewById(R.id.btn1);
btnKet2 = (Button)findViewById(R.id.btn2);
btnKet3 = (Button)findViewById(R.id.btn3);
btnKet4 = (Button)findViewById(R.id.btn4);
btnNext = (Button)findViewById(R.id.btnNext);
txtKet = (TextView)findViewById(R.id.txtKeterangan);
rd1 = (RadioButton)findViewById(R.id.rd1);
rd2 = (RadioButton)findViewById(R.id.rd2);
rd3 = (RadioButton)findViewById(R.id.rd3);
rd4 = (RadioButton)findViewById(R.id.rd4);
onButtonClickListener2();
}
private void onRadioButtonClick(){
if(rd1.isChecked()){
answer = "A";
}else if(rd2.isChecked()){
answer = "B";
}else if (rd3.isChecked()){
answer = "C";
}else if (rd4.isChecked()){
answer = "D";
}else{
answer = "O";
}
}
private void showData(){
db = dbH.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from table_question", null);
if (cursor.moveToFirst()) {
do {
Id = cursor.getString(0);
A = cursor.getString(1);
B = cursor.getString(2);
C = cursor.getString(3);
D = cursor.getString(4);
aExplain = cursor.getString(5);
bExplain = cursor.getString(6);
cExplain = cursor.getString(7);
dExplain = cursor.getString(8);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
}
private void onButtonClickListener2(){
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onRadioButtonClick();
jawab[count]=answer;
count++;
txtKet.setText(String.valueOf(count));
//nanti disini while id question <40 process stop
}
});
btnKet1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i=0;i<count;i++) {
Log.d("Array", "On The Array : " + jawab[i]);
}
}
});
btnKet2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < count; i++) {
if (jawab[i] == "A") {
a = a + 1;
} else if (jawab[i] == "B") {
b = b + 1;
} else if (jawab[i] == "C") {
c = c + 1;
} else if (jawab[i] == "D") {
d = d + 1;
} else {
Toast.makeText(MainActivity.this, "Anjay error ga milih Rd Buton", Toast.LENGTH_LONG).show();
}
}
}
});
btnKet3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(a > b && a > c && a > d) {
dom ="A";
}else if(b>a && b>c && b>d){
dom = "B";
}else if (c>a && c>b && c>d){
dom = "C";
}else if (d>a && d>b && d>c){
dom = "D";
}else{
dom="Z";
}
}
});btnKet4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtKet.setText(dom);
}
});
}
public void loadCSV(){
InputStream is = getAssets().open("myfile.csv");
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); //errors come from here
FileReader file = new FileReader(csv);
String line = "";
String tableName ="question_table";
String columns = "QuestId, a, b, c, d, aExplain, bExplain, cExplain, dExplain, _id";
String str1 = "INSERT INTO " + tableName + " (" + columns + ") values(";
String str2 = ");";
db.beginTransaction();
while ((line = buffer.readLine()) != null) {
StringBuilder sb = new StringBuilder(str1);
String[] str = line.split(",");
sb.append("'" + str[0] + "',");
sb.append(str[1] + "',");
sb.append(str[2] + "',");
sb.append(str[3] + "'");
sb.append(str[4] + "'");
sb.append(str[5] + "'");
sb.append(str[6] + "'");
sb.append(str[7] + "'");
sb.append(str[8] + "'");
sb.append(str[9] + "'");
sb.append(str2);
db.execSQL(sb.toString());
}
db.setTransactionSuccessful();
db.endTransaction();
}
private void onButtonClickListener(){
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onRadioButtonClick();
AsyncTaskRunner runner = new AsyncTaskRunner();
runner.execute(answer);
}
});
btnKet1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
btnKet2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
btnKet3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
btnKet4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private class AsyncTaskRunner extends AsyncTask<String, String, Integer[]>{
private Integer[] answerpasti = new Integer[40];
Integer answertemp = Integer.parseInt(answer);
String respon;
@Override
protected Integer[] doInBackground(String... params) {
publishProgress("Antos Jep Kleng"); // Calls onProgressUpdate()
try {
for(int i = 0;i<40;i++){
answerpasti[i]=answertemp;
}
} catch (Exception e) {
e.printStackTrace();
respon = e.getMessage();
}return null;
}
@Override
protected void onPostExecute(Integer[] integers) {
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
and this one for DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String MyVillageSoftware = "MyVillageSoftware";
public static final String DATABASE_NAME = "Question.db";
public static final String table_Question = "table_question";
public static final String COL1 = "QuestId";
public static final String COL2 = "A";
public static final String COL3 = "B";
public static final String COL4 = "C";
public static final String COL5 = "D";
public static final String COL6 = "aExplain";
public static final String COL7 = "bExplain";
public static final String COL8 = "cExplain";
public static final String COL9 = "dExplain";
public static final String COL10 = "_id";
//TOL for transaction Coloumn
SQLiteDatabase db;
private static final String TAG = DatabaseHelper.class.getSimpleName();
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("Create table " + table_Question +
" (QuestId Integer PRIMARY KEY, " +
"A Text," +
"B Text," +
"C Text" +
"D Text," +
"aExplain Text," +
"bExplain Text," +
"cExplain Text," +
"dExplain Text," +
"_id Text)");
}
public List<String> getAllCategory() {
List<String> AllCategoryList = new ArrayList<String>();
List<String> AllCategIdList = new ArrayList<String>();
String selectQuery = "SELECT * FROM " + table_Question;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
String Id = cursor.getString(0);
String A = cursor.getString(1);
String B = cursor.getString(2);
String C = cursor.getString(3);
String D = cursor.getString(4);
String aExplain = cursor.getString(5);
String bExplain = cursor.getString(6);
String cExplain = cursor.getString(7);
String dExplain = cursor.getString(8);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return AllCategoryList;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + table_Question);
onCreate(db);
}
}
Aucun commentaire:
Enregistrer un commentaire