我想把我的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