mercredi 31 décembre 2014

Need to clear the list of contacts in my android app. Please help)

I'm writting my own android app for storing contacts (name, phone number, email). I've got a database, two activity, one for displaying the list of contacts and the other for filling a form with a contact data. The probleme is that I don't know how to delete all conctacts from the list and also how to delete a single contact from the list. I will show you my code.



package com.example.contactsapp;

public class Contact {



//private variables
int _id;
String _name;
String _lastName;
String _phone_number;
String _email;

// Empty constructor
public Contact(){

}
// constructor
public Contact(int id, String name, String lastName, String _phone_number, String email){
this._id = id;
this._name = name;
this._lastName = lastName;
this._phone_number = _phone_number;
this._email = email;
}

// constructor
public Contact(String name, String lastName, String _phone_number, String email){
this._name = name;
this._lastName = lastName;
this._phone_number = _phone_number;
this._email = email;
}
// getting ID
public int getID(){
return this._id;
}

// setting id
public void setID(int id){
this._id = id;
}

// getting name
public String getName(){
return this._name;
}

// setting name
public void setName(String name){
this._name = name;
}

// getting lastName
public String getLastName(){
return this._lastName;
}

// setting lastName
public void setLastName(String lastName){
this._lastName = lastName;
}

// getting phone number
public String getPhoneNumber(){
return this._phone_number;
}

// setting phone number
public void setPhoneNumber(String phone_number){
this._phone_number = phone_number;
}

// getting lastName
public String getEmail(){
return this._email;
}

// setting lastName
public void setEmail(String email){
this._email = email;
}
}

package com.example.contactsapp;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler extends SQLiteOpenHelper {

// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "contactsManager";

// Contacts table name
private static final String TABLE_CONTACTS = "contacts";

// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_LAST_NAME = "last_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);
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_LAST_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT," + KEY_EMAIL + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

// Create tables again
onCreate(db);
}

/**
* All CRUD(Create, Read, Update, Delete) Operations
*/

// Adding new contact
public void addContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_LAST_NAME, contact.getLastName()); // Contact Last Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone
values.put(KEY_EMAIL, contact.getEmail()); // Contact Email

// Inserting Row
db.insert(TABLE_CONTACTS, null, values);
db.close(); // Closing database connection
}

// Getting single contact
Contact getContact(int id) {
SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
KEY_NAME, KEY_LAST_NAME, KEY_PH_NO, KEY_EMAIL }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();

Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4));
// return contact
return contact;
}

// Getting All Contacts
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
// 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 {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setLastName(cursor.getString(2));
contact.setPhoneNumber(cursor.getString(3));
contact.setEmail(cursor.getString(4));

String name = cursor.getString(1) +"\n"+ cursor.getString(2) +"\n"+ cursor.getString(3) +"\n"+ cursor.getString(4);
MainActivity.ArrayofName.add(name);
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}

// return contact list
return contactList;
}

// Updating single contact
public int updateContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_LAST_NAME, contact.getLastName());
values.put(KEY_PH_NO, contact.getPhoneNumber());
values.put(KEY_EMAIL, contact.getEmail());

// updating row
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
}

//public void clearDataBase(SQLiteDatabase db) {
//db.execSQL("DROP TABLE " + TABLE_CONTACTS);
//onCreate(db);
//}

// Deleting single contact
public void deleteContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
db.close();
}


// Getting contacts Count
public int getContactsCount() {
String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();

// return count
return cursor.getCount();
}

}

public class MainActivity extends Activity {

DatabaseHandler db = new DatabaseHandler(this);

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

//For menu
private Menu m = null;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
//R.menu.menu est l'id de notre menu
inflater.inflate(R.menu.menu, menu);
m = menu;
return true;
}


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

db.getAllContacts();

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

registerForContextMenu(listView);
listView.setOnCreateContextMenuListener(this);

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

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();
//db.deleteContact();
}
});
}

public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
}

//For menu
@Override
public boolean onOptionsItemSelected (MenuItem item)
{

final Context context = this;

switch(item.getItemId())
{
case R.id.item1:
//Dans le Menu "m", on active tous les items dans le groupe d'identifiant "R.id.group2"
//m.setGroupEnabled(R.id.group2, true);
//return true;
Intent intent = new Intent(context, Form.class);
startActivity(intent);
//break;
//case R.id.item2:
//db.clearDataBase(db);
//break;
}
return super.onOptionsItemSelected(item);
}
}


In the MainActivity, when I call the menu, there are two options. The second one is supposed to delete all conctacts from the list. My friends, I don't how to implement it, please help


Thanks a lot in advance, Karen.


Aucun commentaire:

Enregistrer un commentaire