dimanche 26 avril 2015

Android - ArrayList<> object that contain data from locale database can not be loaded?

I am developing Android app that load data from SQLite database. I had tried to open my DB from MainActivity and there was no problem. when i call a method from my SQLController, it getting error (application not opened).

SQLController:

public class SQLController {
private DBHelper dbhelper;
private Context ourcontext;
private SQLiteDatabase database;

public SQLController(Context c) {
    ourcontext = c;
}

public SQLController open() throws SQLException {
    dbhelper = new DBHelper(ourcontext);
    database = dbhelper.getWritableDatabase();
    return this;

}

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

public ArrayList<Crops> getCrops(){
    ArrayList<Crops> listCrops = new ArrayList<>();

    String[] allColumns = new String[] { DBHelper.CROPS_ID, DBHelper.IS_FAVOURITE,
            DBHelper.ID_NAME, DBHelper.EN_NAME, DBHelper.SPECIES, DBHelper.GENUS,
            DBHelper.FAMILY, DBHelper.ORDER, DBHelper.CLASS, DBHelper.DIVISION,
            DBHelper.KINGDOM, DBHelper.CATEGORY_ID, DBHelper.PICT};

    Cursor c = database.query(DBHelper.TABLE_CROPS,allColumns,null,null,null,null,null);

    if (c != null && c.moveToFirst()) {
        do {
            Crops crops = new Crops();
            crops.setId(c.getLong(c.getColumnIndex(DBHelper.CROPS_ID)));
            crops.setIdNname(c.getString(c.getColumnIndex(DBHelper.ID_NAME)));
            crops.setIsFavourite(c.getLong(c.getColumnIndex(DBHelper.IS_FAVOURITE)));
            crops.setEnName(c.getString(c.getColumnIndex(DBHelper.EN_NAME)));
            crops.setSpecies(c.getString(c.getColumnIndex(DBHelper.SPECIES)));
            crops.setGenus(c.getString(c.getColumnIndex(DBHelper.GENUS)));
            crops.setFamily(c.getString(c.getColumnIndex(DBHelper.FAMILY)));
            crops.setOrder(c.getString(c.getColumnIndex(DBHelper.ORDER)));
            crops.setClasss(c.getString(c.getColumnIndex(DBHelper.CLASS)));
            crops.setDivision(c.getString(c.getColumnIndex(DBHelper.DIVISION)));
            crops.setCategoryId(c.getLong(c.getColumnIndex(DBHelper.CATEGORY_ID)));
            crops.setPict(c.getString(c.getColumnIndex(DBHelper.PICT)));

            listCrops.add(crops);
        } while (c.moveToNext());
    }

    if (c != null) {
        c.close();
    }
    return listCrops;
}
}

MainActivity to test the method:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    dbcont = new SQLController(this);
    try {
        dbcont.open();
        cropses = dbcont.getCrops();
        dbcont.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

when I remove cropses = dbcont.getCrops();, application running.

Aucun commentaire:

Enregistrer un commentaire