MyDBOpenHelper.java
public class MyDBOpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "your_db_name";
private static final int DATABASE_VERSION = 2;
public static final String TABLE_NAME = "yout_table_name";
public static final String ID = "id";
public static final String VALUE = "value";
public MyDBOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE dbTable (" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + VALUE + " TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS dbTable");
onCreate(db);
}
}
DBActivity.java
public class DBActivity extends FragmentActivity implements DbAddDialogListener {
MyDBOpenHelper myDBOpenHelper;
SQLiteDatabase sqdb;
ListView listView;
DbAddEditDialog addEditDialog;
FragmentManager fm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.db_activity_layout);
addEditDialog = new DbAddEditDialog();
addEditDialog.setListener(this);
fm = ((FragmentActivity)this).getSupportFragmentManager();
myDBOpenHelper = new MyDBOpenHelper(this);
sqdb = myDBOpenHelper.getWritableDatabase();
updateList();
Button addBtn = (Button)findViewById(R.id.addBtn);
addBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
addEditDialog.setMsg("");
addEditDialog.setDbId(null);
addEditDialog.show(fm, null);
}
catch (ClassCastException e) { }
}
});
}
private void updateList() {
List<MyItem> list = new ArrayList<MyItem>();
Cursor c = sqdb.query(MyDBOpenHelper.TABLE_NAME,
new String[] {MyDBOpenHelper.ID, MyDBOpenHelper.VALUE},
null, null,null,null,null);
while (c.moveToNext()) {
int id = c.getInt(c.getColumnIndex(MyDBOpenHelper.ID));
String value = c.getString(c.getColumnIndex(MyDBOpenHelper.VALUE));
MyItem item = new MyItem();
item.setId(id);
item.setTitle(value);
list.add(item);
}
c.close();
CustomAdapter adapter = new CustomAdapter(this, R.layout.db_list_view_item, list);
listView = (ListView)findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
class MyItem {
private Integer id;
private String title;
public Integer getId() { return id; }
public String getTitle() { return title; }
public void setId(Integer id) { this.id = id; }
public void setTitle(String title) { this.title = title; }
}
class CustomAdapter extends ArrayAdapter<MyItem> {
private List<MyItem> items;
private int layoutResource;
public CustomAdapter(Context context, int layoutResource, List<MyItem> items) {
super(context, layoutResource, items);
this.items = items;
this.layoutResource = layoutResource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(layoutResource, null);
}
final MyItem myItem = items.get(position);
if (myItem != null) {
TextView title = (TextView)convertView.findViewById(R.id.textView1);
if (title != null){
title.setText(myItem.getTitle());
}
Button editBtn = (Button)convertView.findViewById(R.id.editBtn);
editBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
addEditDialog.setMsg(myItem.getTitle());
addEditDialog.setDbId(myItem.getId());
addEditDialog.show(fm, null);
}
});
Button deleteBtn = (Button)convertView.findViewById(R.id.deleteBtn);
deleteBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sqdb.delete(MyDBOpenHelper.TABLE_NAME, MyDBOpenHelper.ID + " = ?", new String[] { String.valueOf(myItem.getId()) });
updateList();
}
});
}
return convertView;
}
}
@Override
public void okClicked(String str, Integer id) {
if (id == null) {
ContentValues values = new ContentValues();
values.put(MyDBOpenHelper.VALUE, str);
sqdb.insert(MyDBOpenHelper.TABLE_NAME, null, values);
}
else {
ContentValues values = new ContentValues();
values.put(MyDBOpenHelper.ID, id);
values.put(MyDBOpenHelper.VALUE, str);
sqdb.update(MyDBOpenHelper.TABLE_NAME, values, MyDBOpenHelper.ID + " = ?", new String[] { String.valueOf(id) });
}
updateList();
}
}
DbAddEditDialog.java
public class DbAddEditDialog extends DialogFragment {
String msg;
Integer dbId;
DbAddDialogListener listener;
public Integer getDbId() { return dbId; }
public String getMsg() { return msg; }
public void setDbId(Integer dbId) { this.dbId = dbId; }
public void setMsg(String msg) { this.msg = msg; }
public void setListener(DbAddDialogListener listener) { this.listener = listener; }
public interface DbAddDialogListener {
public void okClicked(String str, Integer id);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater li = LayoutInflater.from(getActivity());
View promptsView = li.inflate(R.layout.dialog_layout, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setView(promptsView);
if (dbId != null) {
TextView textView = (TextView)promptsView.findViewById(R.id.textView1);
textView.setText("edit the db data");
}
final EditText userInput = (EditText) promptsView.findViewById(R.id.editTextDialogUserInput);
userInput.setText(msg);
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.okClicked(userInput.getText().toString(), dbId);
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
return alertDialog;
}
}
dialog_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Insert into DB"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editTextDialogUserInput"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
</LinearLayout>
db_activity_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/header" >
<Button
android:id="@+id/addBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Add" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/addBtn"
android:layout_alignBottom="@+id/addBtn"
android:layout_centerHorizontal="true"
android:text="Database" />
</RelativeLayout>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>