Comment afficher le contenu de base de données sur android Listview?
Je suis en train de travailler sur un livre de contact comme application.J'ai une base de données et,je veux afficher les données dans la liste. Quelqu'un peut-il me dire comment faire? Ci-dessous est ce que j'ai essayé jusqu'à présent,
public class Contacts {
private int id;
private String name;
private String phone_number;
private String email;
public Contacts()
{
}
public Contacts(int id, String name, String phone_number, String email)
{
this.id = id;
this.name = name;
this.phone_number = phone_number;
this.email = email;
}
public Contacts(String name, String phone_number, String email)
{
this.name = name;
this.phone_number = phone_number;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone_number() {
return phone_number;
}
public void setPhone_number(String phone_number) {
this.phone_number = phone_number;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "ContactsManager";
private static final String TABLE_CONTACTS = "contacts";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_PH_NO = "phone_number";
private static final String KEY_EMAIL = "email";
public DatabaseHandler(Context context) {
super( context, DATABASE_NAME, null, DATABASE_VERSION);
//TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
//TODO Auto-generated method stub
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT," + KEY_EMAIL + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
onCreate(db);
}
public void insertContact(Contacts contacts)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, contacts.getName()); //Contact Name
cv.put(KEY_PH_NO, contacts.getPhone_number()); //Contact Phone
cv.put(KEY_EMAIL, contacts.getEmail()); //Contact Email
//Inserting Row
db.insert(TABLE_CONTACTS, null, cv);
db.close();
}
//Getting All Contacts
public List<Contacts> getAllContacts()
{
List<Contacts> contactList = new ArrayList<Contacts>();
//Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
//looping through all rows and adding to list
if (cursor.moveToFirst())
{
do {
Contacts contact = new Contacts();
//contact.setId(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhone_number(cursor.getString(2));
contact.setEmail(cursor.getString(3));
//Adding contact to list
contactList.add(contact);
}
while (cursor.moveToNext());
}
//return contact list
return contactList;
}
}
public class View_data extends ListActivity {
DatabaseHandler db = new DatabaseHandler(this);
Cursor c ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_data);
db.getWritableDatabase();
List<Contacts> values = db.getAllContacts();
ArrayAdapter<Contacts> adapter = new ArrayAdapter<Contacts>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.view_data, menu);
return true;
}
}
Dans View_data
classe j'ai essayé d'afficher les données, mais ne pouvait pas le faire.
Toute Suggestion sera fortement appréciée.
- S'il vous plaît aller à travers un tutoriel de base sur listview et Sqlite. Voici quelque chose pour vous aider:mysamplecode.com/2012/07/...
Vous devez vous connecter pour publier un commentaire.
Vous devez passer du contexte ,de votre élément de la liste mise en page et le curseur dans la Coutume adaptateur.........
alors c'est comment CustomAdapter classe est implémentée dans lequel vous devez remplacer votre bindView méthode. Cet aspect complexe jusqu'à ce que vous étudiez et puis essayer de le faire vous-même.
vous pouvez aussi vous référer à ce lien http://dj-android.blogspot.in/2012/10/android-show-data-from-sqlite-db-into.html
Vous avez pour transmettre les données à la UserAdapter.Le code
List<DataProvider> data = userDbHelper.getInformation(sqLiteDatabase);
est utilisé pour la restauration de données à partir de SQL base de données, qui sont appliqués pour les données variables. Essayez cette méthode.Puis UserAdapter classe d'implémentation est donnée ci-dessous qui s'étend de la ArrayAdapter..
Le code ci-dessus est UserAdapter qui s'étend de la ArrayAdapter.Essayez cette méthode, vous obtiendrez la solution.
Vous pouvez également consulter ce lien https://github.com/codepath/android_guides/wiki/using-an-arrayadapter-with-listview