day 03データストレージとインタフェースの表示(2)
8989 ワード
テスト
ユニットテストjunit
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.itheima.junit"
></instrumentation>
<uses-library android:name="android.test.runner"></uses-library>
SQLiteデータベース
//arg1:
//arg2:
//arg3:
public MyOpenHelper(Context context, String name, CursorFactory factory, int version){}
データベースの作成
// OpenHelper
MyOpenHelper oh = new MyOpenHelper(getContext(), "person.db", null, 1);
// , , , , ,
SQLiteDatabase db = oh.getWritableDatabase();
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table person (_id integer primary key autoincrement, name char(10), phone char(20), money integer(20))");
}
データベースの削除
SQL文
SQL文を実行して添削を実現する
//
db.execSQL("insert into person (name, phone, money) values (?, ?, ?);", new Object[]{" ", 15987461, 75000});
//
Cursor cs = db.rawQuery("select _id, name, money from person where name = ?;", new String[]{" "});
*このメソッドは、テストメソッドが実行される前に呼び出されます.
protected void setUp() throws Exception {
super.setUp();
//
oh = new MyOpenHelper(getContext(), "people.db", null, 1);
}
apiを使用して削除・変更を実現
//
ContentValues cv = new ContentValues();
cv.put("name", " ");
cv.put("phone", 1651646);
cv.put("money", 3500);
// , -1
long i = db.insert("person", null, cv);
//
int i = db.delete("person", "_id = ? and name = ?", new String[]{"1", " "});
ContentValues cv = new ContentValues();
cv.put("money", 25000);
int i = db.update("person", cv, "name = ?", new String[]{" "});
//arg1:
//arg2:
//arg3:
Cursor cs = db.query("person", new String[]{"name", "money"}, "name = ?", new String[]{" "}, null, null, null);
while(cs.moveToNext()){
//
String name = cs.getString(cs.getColumnIndex("name"));
String money = cs.getString(cs.getColumnIndex("money"));
System.out.println(name + ";" + money);
}
取引
try {
//
db.beginTransaction();
...........
//
db.setTransactionSuccessful();
} finally{
//
// , sql ,
db.endTransaction();
}
データベースのデータを画面に表示する
ListView
BaseAdapter
// ,
@Override
public int getCount() {
return people.size();
}
// , ListView View
//position: return View
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("getView " + position);
TextView tv = new TextView(MainActivity.this);
//
Person p = people.get(position);
tv.setText(p.toString());
// TextView , ListView
return tv;
}
エントリのキャッシュ
ダイアログ
OKキャンセルダイアログ
builder.setPositiveButton(" ", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, " , ", 0).show();
}
});
builder.setNegativeButton(" ", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, " , ", 0).show();
}
});
AlertDialog ad = builder.create();
ad.show();
ラジオダイアログ
AlertDialog.Builder builder = new Builder(this);
builder.setTitle(" ");
*ラジオオプションの定義*final String[]items=new String[]{「男」「女」「その他」};/-1デフォルトの選択がないことを示す//リスナーのガイドパッケージをクリックbuilderを間違えないように注意する.setSingleChoiceItems(items, -1, new OnClickListener() {
//which
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, " " + items[which], 0).show();
//
dialog.dismiss();
}
});
builder.show();
複数選択ダイアログ
AlertDialog.Builder builder = new Builder(this);
builder.setTitle(" ");
*複数選択のオプションを定義します.複数選択可能なので、どのオプションが選択されたかを記録するにはboolean配列が必要です.*final String[]items=new String[]{「趙イケメン」、「趙師兄」、「趙先生」、「侃兄」//trueは対応する位置を表すオプションでfinal boolean[]checkedItems=new boolean[]{true,false,false,false,}が選択されています.builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {
// , , isChecked true
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkedItems[which] = isChecked;
}
});
builder.setPositiveButton(" ", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuffer sb = new StringBuffer();
for(int i = 0;i < items.length; i++){
sb.append(checkedItems[i] ? items[i] + " " : "");
}
Toast.makeText(MainActivity.this, sb.toString(), 0).show();
}
});
builder.show();