从sqlite到listview的日期

时间:2014-05-13 14:40:08

标签: android sqlite listview

我想把我的sqlite日期放到listview

 public ArrayList<HashMap<String, String>> openAndQueryDatabase() {
    try {

        Cursor c = bdd.rawQuery("SELECT lieu, date,description FROM " +
                TABLE_EVENT , null);

        if (c != null ) {

            if  (c.moveToFirst()) do {
                String lieu = c.getString(c.getColumnIndex("Lieu"));
                String date = c.getString(c.getColumnIndex("Date"));
                String description = c.getString(c.getColumnIndex("Description"));


                map = new HashMap<String, String>();
                map.put("lieu", lieu);
                map.put("date", date);
                map.put("description", description);
                map.put("img", String.valueOf(R.drawable.ic_launcher));
                listItem.add(map);

            } while (c.moveToNext());
        }
    } catch (SQLiteException se ) {
        Log.e(getClass().getSimpleName(), "Could not create or Open the database");
    } finally {
        if (bdd != null)
            bdd.execSQL("DELETE FROM " + TABLE_EVENT);
        bdd.close();
    }
    return  listItem;
}

这是我的功能应该做的。

我在我的MainActivity中恢复并调整我的listItem

这是我如何做到的:

    listItem2=  e.openAndQueryDatabase();

      SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem2, R.layout.events,
              new String[] {"img", "titre","date", "description"}, new int[] {R.id.img, R.id.titre,R.id.date, R.id.description});

  maListViewPerso.setAdapter(mSchedule);

这是我的eventBDD类

    package com.example.FMP;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.util.Log;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * Created by maxime on 12/05/2014.
 */
public class EventBDD {


    private ListView maListViewPerso;
    //Création de la ArrayList qui nous permettra de remplire la listView
    private ArrayList<String> results = new ArrayList<String>();
    ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();

    //On déclare la HashMap qui contiendra les informations pour un item
    HashMap<String, String> map;
    //On déclare la HashMap qui contiendra les informations pour un item

    private static final int VERSION_BDD = 1;
    private static final String NOM_BDD = "eleves.db";

    private static final String TABLE_EVENT = "table_event";
    private static final String COL_ID = "ID";
    private static final int NUM_COL_ID = 0;
    private static final String COL_Lieu = "Lieu";
    private static final int NUM_COL_Lieu = 1;
    private static final String COL_Date = "Date";
    private static final int NUM_COL_Date = 2;
    private static final String COL_Description = "Description";
    private static final int NUM_COL_Description = 3;

    private SQLiteDatabase bdd;

    private MaBaseSQLite maBaseSQLite;

    public EventBDD(Context context){
        //On créer la BDD et sa table
        maBaseSQLite = new MaBaseSQLite(context, NOM_BDD, null, VERSION_BDD);
    }

    public void open(){
        //on ouvre la BDD en écriture
        bdd = maBaseSQLite.getWritableDatabase();
    }

    public void close(){
        //on ferme l'accès à la BDD
        bdd.close();
    }

    public SQLiteDatabase getBDD(){
        return bdd;
    }



    public long insertEvent(Event event){
        //Création d'un ContentValues (fonctionne comme une HashMap)
        ContentValues values = new ContentValues();
        //on lui ajoute une valeur associé à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
        values.put(COL_Lieu, event.getlieu());
        values.put(COL_Date, event.getDate());
        values.put(COL_Description, event.getDescription());
        //on insère l'objet dans la BDD via le ContentValues
        return bdd.insert(TABLE_EVENT, null, values);
    }

    public int updateevent(int id, Event event){
        //La mise à jour d'un livre dans la BDD fonctionne plus ou moins comme une insertion
        //il faut simple préciser quelle livre on doit mettre à jour grâce à l'ID
        ContentValues values = new ContentValues();
        values.put(COL_Lieu, event.getlieu());
        values.put(COL_Date, event.getDate());
        values.put(COL_Description, event.getDescription());
        return bdd.update(TABLE_EVENT, values, COL_ID + " = " +id, null);
    }

    public int removeeventWithID(int id){
        //Suppression d'un livre de la BDD grâce à l'ID
        return bdd.delete(TABLE_EVENT, COL_ID + " = " +id, null);
    }

    public Event geteventWithlieu(String lieu){
        //Récupère dans un Cursor les valeur correspondant à un livre contenu dans la BDD (ici on sélectionne le livre grâce à son titre)
        Cursor c = bdd.query(TABLE_EVENT, new String[] {COL_ID, COL_Lieu, COL_Date,COL_Description}, COL_Lieu + " LIKE \"" + lieu +"\"", null, null, null, null,null);
        return cursorToEvent(c);
    }

    public Event geteventWithlieu(int id){
        //Récupère dans un Cursor les valeur correspondant à un livre contenu dans la BDD (ici on sélectionne le livre grâce à son titre)
        Cursor c = bdd.query(TABLE_EVENT, new String[] {COL_ID, COL_Lieu, COL_Date,COL_Description}, COL_ID + " LIKE \"" + id +"\"", null, null, null, null,null);
        return cursorToEvent(c);
    }

    //Cette méthode permet de convertir un cursor en un livre
    public Event cursorToEvent(Cursor c){
        //si aucun élément n'a été retourné dans la requête, on renvoie null
        if (c.getCount() == 0)
            return null;

        //Sinon on se place sur le premier élément
        c.moveToFirst();

        //On créé un livre
        Event event = new Event();
        //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
       event.setId(c.getInt(NUM_COL_ID));
        event.setlieu(c.getString(NUM_COL_Lieu));
      event.setDate(c.getString(NUM_COL_Date));
        event.setDescription(c.getString(NUM_COL_Description));
        //On ferme le cursor
        c.close();


        //On retourne le livre
        return event;
    }
    public  ArrayList<HashMap<String, String>> openAndQueryDatabase() {
        try {

            Cursor c = bdd.rawQuery("SELECT lieu, date,description FROM " +
                    TABLE_EVENT , null);

            if (c != null ) {

                if  (c.moveToFirst()) do {
                    String lieu = c.getString(c.getColumnIndex("Lieu"));
                    String date = c.getString(c.getColumnIndex("Date"));
                    String description = c.getString(c.getColumnIndex("Description"));


                    map = new HashMap<String, String>();
                    map.put("lieu", lieu);
                    map.put("date", date);
                    map.put("description", description);
                    map.put("img", String.valueOf(R.drawable.ic_launcher));
                    listItem.add(map);

                } while (c.moveToNext());
            }
        } catch (SQLiteException se ) {
            Log.e(getClass().getSimpleName(), "Could not create or Open the database");
        } finally {
            if (bdd != null)
                bdd.execSQL("DELETE FROM " + TABLE_EVENT);
            bdd.close();
        }
        return  listItem;
    }



}

但是我收到了一个很大的错误:

05-13 05:03:20.008    1693-1693/com.example.FMP E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.FMP, PID: 1693
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.FMP/com.example.FMP.MyActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.example.FMP.EventBDD.openAndQueryDatabase(EventBDD.java:156)
            at com.example.FMP.MyActivity.onCreate(MyActivity.java:74)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method) 05-13 05:03:23.508    1693-1693/com.example.FMP I/Process﹕ Sending signal. PID: 1693 SIG: 9

0 个答案:

没有答案