samedi 2 mai 2015

String Array Assignment Error, Android, Sqllite

I am new to programming. This is my code where I am trying to build a quiz app using Sqllite. Whenever I try to assign String Array ques to a method similar to method getopta, the program says no more question available(executes else) but works fine with getData method. why? This is the code for Sqlclass handler & MainActivity.

`package com.example.seems;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
public class Sqlclass {
public static final String KEY_ROWID = "_id";
public static final String KEY_TAG = "Tag";
public static final String KEY_QUESTION = "Question";
public static final String KEY_OPTA = "Optiona";
public static final String KEY_OPTB = "Optionb";
public static final String KEY_OPTC = "Optionc";
public static final String KEY_ANSWER = "Answer";

private static final String DATABASE_NAME = "NEWDB.db";
private static final String DATABASE_TABLE = "SEEMS_quiz";
private static final int DATABASE_VERSION = 1;

private Dbhelper ourhelper;
private final Context ourcontext;
private SQLiteDatabase ourdatabase;

String[] quesArray = {};
String[] optaArray = {};
String[] optbArray = {};
String[] optcArray = {};

private static class Dbhelper extends SQLiteOpenHelper {

    public Dbhelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_TAG
                + " TEXT, " + KEY_QUESTION + " TEXT, " + KEY_OPTA
                + " TEXT, " + KEY_OPTB + " TEXT, " + KEY_OPTC + " TEXT, "
                + KEY_ANSWER + " TEXT); ");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

}

public Sqlclass(Context c) {
    ourcontext = c;

}

public Sqlclass open() throws Exception {
    ourhelper = new Dbhelper(ourcontext);
    ourdatabase = ourhelper.getWritableDatabase();
    return this;
}

public void close() {
    ourhelper.close();
}

public long createEntry(String tag, String question, String opta,
        String optb, String optc, String ans) {
    // TODO Auto-generated method stub
    ContentValues cv = new ContentValues();
    cv.put(KEY_TAG, tag);
    cv.put(KEY_QUESTION, question);
    cv.put(KEY_OPTA, opta);
    cv.put(KEY_OPTB, optb);
    cv.put(KEY_OPTC, optc);
    cv.put(KEY_ANSWER, ans);
    return ourdatabase.insert(DATABASE_TABLE, null, cv);

}

public String[] getData() {
    // TODO Auto-generated method stub
    String[] coloums = new String[] { KEY_ROWID, KEY_TAG, KEY_QUESTION,
            KEY_OPTA, KEY_OPTB, KEY_OPTC };

    Cursor c = ourdatabase.query(DATABASE_TABLE, coloums, null, null, null,
            null, null);
    List<String> qsef = new ArrayList<String>();
    List<String> opta = new ArrayList<String>();
    List<String> optb = new ArrayList<String>();
    List<String> optc = new ArrayList<String>();
    int irow = c.getColumnIndex(KEY_ROWID);
    int itag = c.getColumnIndex(KEY_TAG);
    int iquestion = c.getColumnIndex(KEY_QUESTION);
    int iopta = c.getColumnIndex(KEY_OPTA);
    int ioptb = c.getColumnIndex(KEY_OPTB);
    int ioptc = c.getColumnIndex(KEY_OPTC);
    int ians = c.getColumnIndex(KEY_ANSWER);
    c.moveToFirst();
    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {

        qsef.add(c.getString(iquestion));
        opta.add(c.getString(iopta));
        optb.add(c.getString(ioptb));
        optc.add(c.getString(ioptc));
        quesArray = qsef.toArray(new String[qsef.size()]);
        optaArray = opta.toArray(new String[opta.size()]);
        optbArray = optb.toArray(new String[optb.size()]);
        optcArray = optc.toArray(new String[optc.size()]);

    }
    return quesArray;

}

public String[] getopta() {
    // TODO Auto-generated method stub
    return optaArray;

}

public String[] getoptb() {
    // TODO Auto-generated method stub
    return optbArray;

}

public String[] getoptc() {
    // TODO Auto-generated method stub
    return optcArray;

}

} ` This is mainActivity

'package com.example.seems;
//import android.support.v7.app.ActionBarActivity;
//import android.support.v7.app.ActionBar;
//import android.support.v4.app.Fragment;

import java.util.Arrays;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
//import android.view.LayoutInflater;
//import android.view.Menu;
//import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
//import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

//import android.os.Build;

public class MainActivity extends Activity implements OnClickListener {
RadioButton R1, R2, R3;
TextView dis;
Button bp, bs, bn;
String[] ques, a, b, c;
int i = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    intialize();
    bn.setOnClickListener(this);
    R1.setOnClickListener(this);

}

private void intialize() {
    // TODO Auto-generated method stub
    dis = (TextView) findViewById(R.id.tvDisplay);
    R1 = (RadioButton) findViewById(R.id.radioButton1);
    R2 = (RadioButton) findViewById(R.id.radioButton2);
    R3 = (RadioButton) findViewById(R.id.radioButton3);
    bp = (Button) findViewById(R.id.b1);
    bn = (Button) findViewById(R.id.b2);
    setquestion();
}

private void setquestion() {
    // TODO Auto-generated method stub
    Sqlclass info = new Sqlclass(this);
    try {
        info.open();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ques = info.getData();
    a = info.getopta();
    b = info.getoptb();
    c = info.getoptc();

    info.close();

}

@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    switch (arg0.getId()) {
    case R.id.b2:
        if (i < ques.length) {
            dis.setText(ques[i]);
            R1.setText(a[i]);
            R2.setText(b[i]);
            R3.setText(c[i]);
            i++;
            break;
        } else {
            dis.setText("No more questions");
        }

    }
}

}'

Aucun commentaire:

Enregistrer un commentaire