将数据从数据库发送到android中的列表视图

时间:2014-04-24 11:00:04

标签: android database sqlite

我一直在尝试将我从android中的数据库中检索到的数据打印到列表视图中,但是当我收到数据时,我没有得到任何打印出的内容。我相信我可能会遗漏一些代码,但我不确定。

以下是我必须从数据库中检索和打印的代码:

public class DrinksDiaryActivity extends Activity {

    private ListView listView;
    public static ArrayList<String> ArrayOfDrink = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drinks_diary);
        populateLayoutFromDrinkDiaryTitles();
    }



    public void onNewDrinkButtonClicked(View v){
        Intent drinkEntry = new Intent(this, DrinkEntryActivity.class);
        startActivity(drinkEntry);

    }

    private void populateLayoutFromDrinkDiaryTitles(){
        DatabaseHandler db = new DatabaseHandler(this);
        List<Drink> drinkEntry = db.getAllDrinkEntrys();
        for (Drink cn : drinkEntry) {
            String log = "Id: "+cn.getID()+", Drink: " + cn.getDrinkType() + ", Drink Volume: " + cn.getDrinkVolume() + ", Alcohol Percentage: " + cn.getAlcoholPercentage() + ", Time: " + cn.getTimeStamp() + 
                ", Units: " + cn.getUnits();
            System.out.println(log);


        }   
        //db.getAllDrinkEntrys();

        listView = (ListView) findViewById(R.id.drinkDiaryList);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, ArrayOfDrink);

        listView.setAdapter(adapter);


        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
               Toast.makeText(getApplicationContext(),
                ((TextView) v).getText(), Toast.LENGTH_SHORT).show();
            }
        });
    }   
}

我的数据库处理程序:

public class DatabaseHandler extends SQLiteOpenHelper  {
    // Database Version
    private static final int DATABASE_VERSION = 1;
    // Database Name
    private static final String DRINKS_DIARY_DATABASE = "drinksDiaryDatabase";
    // Contacts table name
    private final String DRINKS_DIARY_TABLE = "drinksDiaryDatabase";
    // Contacts Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_DRINK_TYPE = "drinkType";
    private static final String KEY_DRINK_VOLUME = "drinkVolume";
    private static final String KEY_ALCOHOL_PERCENTAGE = "alcoholPercentage";
    private static final String KEY_TIMESTAMP = "timeStamp";
    private static final String KEY_UNITS = "units";

    public DatabaseHandler(Context context) {
        super(context, DRINKS_DIARY_DATABASE, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_DRINK_DIARY_TABLE = "CREATE TABLE " + DRINKS_DIARY_TABLE + "(" + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_DRINK_TYPE
            + " TEXT, " + KEY_DRINK_VOLUME + " TEXT, " + KEY_ALCOHOL_PERCENTAGE + " TEXT, " + KEY_TIMESTAMP + " TEXT, " + KEY_UNITS + " TEXT" +  ")";
         db.execSQL(CREATE_DRINK_DIARY_TABLE);
    }

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

         db.execSQL("DROP TABLE IF EXISTS " + DRINKS_DIARY_TABLE);

        onCreate(db);
    }


    public void addDrinkEntry(Drink drinkEntry) {
    SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_DRINK_TYPE, drinkEntry.getDrinkType());
        values.put(KEY_DRINK_VOLUME, drinkEntry.getDrinkVolume());
        values.put(KEY_ALCOHOL_PERCENTAGE, drinkEntry.getAlcoholPercentage());
        values.put(KEY_TIMESTAMP, drinkEntry.getTimeStamp());
        values.put(KEY_UNITS, drinkEntry.getUnits());
        db.insert(DRINKS_DIARY_TABLE, null, values);
        db.close();
    }


    public Drink getDrinkEntry(int id) {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(DRINKS_DIARY_TABLE, new String[] {
        KEY_ID, KEY_DRINK_TYPE, KEY_DRINK_VOLUME, KEY_ALCOHOL_PERCENTAGE, KEY_TIMESTAMP, KEY_UNITS,
        }, KEY_ID + "=?", new String[] {
            String.valueOf(id) }, null, null, null, null);    
        if (cursor != null){
            cursor.moveToFirst();
        }
        Drink drinkEntry = new Drink(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5));
        return drinkEntry;
    }


     public List<Drink> getAllDrinkEntrys() {
         List<Drink> drinkEntryList = new ArrayList<Drink>(); 
         String selectQuery = "SELECT  * FROM " + DRINKS_DIARY_TABLE;
         SQLiteDatabase db = this.getWritableDatabase();
         Cursor cursor = db.rawQuery(selectQuery, null);
         if (cursor.moveToFirst()) {
             do {
                 Drink drinkEntry = new Drink();
                 drinkEntry.setID(Integer.parseInt(cursor.getString(0)));
                 drinkEntry.setDrinkType(cursor.getString(1));
                 drinkEntry.setDrinkVolume(cursor.getString(2));
                 drinkEntry.setAlcoholPercentage(cursor.getString(3));
                 drinkEntry.setTimeStamp(cursor.getString(4));
                 drinkEntry.setUnits(cursor.getString(5));
                 drinkEntryList.add(drinkEntry);
             }
             while (cursor.moveToNext());
             }
          return drinkEntryList;
     }


     public int getDrinkEntryCount() {
         String countQuery = "SELECT  * FROM " + DRINKS_DIARY_TABLE;
         SQLiteDatabase db = this.getReadableDatabase();
         Cursor cursor = db.rawQuery(countQuery, null);
         cursor.close();
         return cursor.getCount();
     }


     public int updateDrinkEntry(Drink drinkEntry) {
         SQLiteDatabase db = this.getWritableDatabase();
         ContentValues values = new ContentValues();
         values.put(KEY_DRINK_TYPE, drinkEntry.getDrinkType());
         values.put(KEY_DRINK_VOLUME, drinkEntry.getDrinkVolume());
         values.put(KEY_ALCOHOL_PERCENTAGE, drinkEntry.getDrinkVolume());
         values.put(KEY_TIMESTAMP, drinkEntry.getTimeStamp());
         values.put(KEY_UNITS, drinkEntry.getUnits());

         return db.update(DRINKS_DIARY_TABLE, values, KEY_ID + " = ?", new String[] { String.valueOf(drinkEntry.getID()) });
     }

      public void deleteDrinkEntry(Drink drinkEntry) {
         SQLiteDatabase db = this.getWritableDatabase();
         db.delete(DRINKS_DIARY_TABLE, KEY_ID + " = ?",
             new String[] { String.valueOf(drinkEntry.getID()) });
         db.close();
    }

}

我的数据库:

public class Drink {

    int _ID;
    String _drinkType;
    String _drinkVolume;
    String _timeStamp;
    String _alcoholPercentage;
    String _units;


    public Drink(){

    }

    public Drink(int id, String drinkType, String drinkVolume, String timeStamp, String alcoholPercentage, String units){
        this._ID = id;
        this._drinkType = drinkType;
        this._drinkVolume = drinkVolume;
        this._timeStamp = timeStamp;
        this._alcoholPercentage = alcoholPercentage;
        this._units = units;
    }


    public Drink(String drinkType, String drinkVolume, String timeStamp, String alcoholPercentage, String units){
        this._drinkType = drinkType;
        this._drinkVolume = drinkVolume;
        this._timeStamp = timeStamp;
        this._alcoholPercentage = alcoholPercentage;
        this._units = units;
    }

    public int getID(){
        return this._ID;
    }


    public void setID(int id){
        this._ID = id;
    }


    public String getDrinkType(){
        return this._drinkType;
    }


    public void setDrinkType(String drinkType){
        this._drinkType = drinkType;
    }


    public String getDrinkVolume(){
        return this._drinkVolume;
    }


    public void setDrinkVolume(String drinkVolume){
        this._drinkVolume = drinkVolume;
    }

    public String getAlcoholPercentage(){
        return this._alcoholPercentage;
    }


    public void setAlcoholPercentage(String alcoholPercentage){
        this._alcoholPercentage = alcoholPercentage;
    }


    public String getTimeStamp(){
        return this._timeStamp;
    }


    public void setTimeStamp(String timeStamp){
        this._timeStamp = timeStamp;
    }

    public String getUnits(){
        return this._units;
    }


    public void setUnits(String units){
        this._units = units;
    }
}

任何人都可以告诉我我做错了什么以及如何解决它?

由于

1 个答案:

答案 0 :(得分:0)

您的ArrayList<String> ArrayOfDrink为空,因为您尚未将任何数据添加到您的广告系列中,而是直接在ArrayList中设置了ListView

我只是添加了饮料类型来展示演示。您可以根据需要添加任何详细信息。在ArrayList中添加数据,如下所示:

private void populateLayoutFromDrinkDiaryTitles(){
        DatabaseHandler db = new DatabaseHandler(this);
        List<Drink> drinkEntry = db.getAllDrinkEntrys();
        for (Drink cn : drinkEntry) {
            String log = "Id: "+cn.getID()+", Drink: " + cn.getDrinkType() + ", Drink Volume: " + cn.getDrinkVolume() + ", Alcohol Percentage: " + cn.getAlcoholPercentage() + ", Time: " + cn.getTimeStamp() + 
                ", Units: " + cn.getUnits();
            System.out.println(log);
           ArrayOfDrink.add(cn.getDrinkType().toString);

        }