Android:将SQLite数据放入BaseAdapter

时间:2014-02-17 07:27:42

标签: android sqlite baseadapter

目前我正在使用baseadapter(图像,资源和数据库)制作自定义列表视图。我在将一个来自sqlite的数据放入baseadapter时遇到了问题。我的代码看起来像这样,数据库代码:

public HashMap<String, String> getResult(String year) {
    HashMap<String, String> questionmap = new HashMap<String, String>();
    SQLiteDatabase database = this.getReadableDatabase();
    String selectQuery = "SELECT _id, COLUMN_B, COLUMN_C FROM TABLE_NAME WHERE YEAR_COLUMN='"+ year + "'";
    Cursor cursor = database.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            questionmap.put("_id", cursor.getString(0));
            questionmap.put("COLUMN_B", cursor.getString(1));
            questionmap.put("COLUMN_C", cursor.getString(2));
        } while (cursor.moveToNext());
    }
    return questionmap;
}

这是我的BaseAdapter看起来像:

class singlerow_info {
    String A, B, C;
    int img;

    singlerow_info(String A, String B, String C,
            int img) {
        this.A = A;
        this.B = B;
        this.C = C;
        this.img = img;
    }

}

class resultadapter extends BaseAdapter {
            //Get YEAR values from previous activity
    Intent intent = getIntent();
    String year = intent.getStringExtra("YEAR");
    HashMap<String, String> questionmap = myDb.getResult(year);
    ArrayList<singlerow_info> list;

    resultadapter(Context c)
    {
        list = new ArrayList<singlerow_info>();
        //get String A from String resource and get String []B and []C from database
        Resources ress = c.getResources();
        String[] A = ress.getStringArray(R.array.exam_question);
        //do here get B,C from db, Here im stuck with.
        String[] B=;
        String[] C= ;       
        int[] images = {R.drawable.icon_1,R.drawable.icon_2};
        for (int i =0; i<40; i++ ){
            list.add(new singlerow_info(A[i],B[i],C[i],images[i]));
        }
    }

请帮忙。

1 个答案:

答案 0 :(得分:0)

类resultadapter扩展BaseAdapter {             //从之前的活动中获取YEAR值     Intent intent = getIntent();     String year = intent.getStringExtra(“YEAR”);     ArrayList questionmapB,questionmapC;     ArrayList列表;

resultadapter(Context c)
{
    list = new ArrayList<singlerow_info>();
    questionmapB = new ArrayList<String>;
     questionmapC = new ArrayList<String>;
     readFromDB();
    //get String A from String resource and get String []B and []C from database
    Resources ress = c.getResources();
    String[] A = ress.getStringArray(R.array.exam_question);
    //do here get B,C from db, Here im stuck with.
    int[] images = {R.drawable.icon_1,R.drawable.icon_2};
    for (int i =0; i<40; i++ ){
        list.add(new singlerow_info(A[i],questionmapB.get(i) ,questionmapC.get(i),images[i]));
    }
}

private void readFromDB()
{

SQLiteDatabase database = this.getReadableDatabase();
    String selectQuery = "SELECT _id, COLUMN_B, COLUMN_C FROM TABLE_NAME WHERE YEAR_COLUMN='"+ year + "'";
    Cursor cursor = database.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            questionmapB.put("COLUMN_B", cursor.getString(1));
            questionmapC.put("COLUMN_C", cursor.getString(2));
        } while (cursor.moveToNext());
    }
}