안드로이드 개발 질문/답변
(글 수 45,052)
public void onListItemClick(ListView l, View v, final int position, long id) { //list항목의 클릭 event
super.onListItemClick(l, v, position, id);
final String ida = text.getText().toString(); // 리스트의 뭘까요?
new AlertDialog.Builder(Db1.this) // 리스트가 클릭되었을때 alterdialog 띄웁니다.
.setTitle("뭐할래?") // dialog의 타이틀이구요
.setItems(items, new DialogInterface.OnClickListener() { // dialog의 아이템이 나타납니다. 2가지. 참고)items[]={"a","b"};
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
if(which==0){ // dialog의 첫번째 항목이 선택되었을때 event
Intent intent = new Intent(Db1.this, classNames[position]); // intent를 통해 액티비티 전환
startActivity(intent);
}
else // dialog의 두번째 항목이 선택
{ db.delMemo(ida); } // 리스트에서 현재 항목 삭제
}
}).show();
}
public class DBAdapter{ //DBAdapter선언부 입니다.
private final Context context;
static final String DB="memos.db";
static final String TABLE = "lines";
static final String COL1="line";
static final int VERSION=1;
static final String CREATE = "create table " + TABLE +
"(_id integer primary key autoincrement, " +
COL1 + " text not null );";
static final String DROP = "drop table ";
private SQLiteDatabase db;
private NoteOpenHelper dbHelper;
public DBAdapter(Context ctx){
context = ctx;
}
private static class NoteOpenHelper extends SQLiteOpenHelper {
public NoteOpenHelper(Context c){
super(c, DB, null, VERSION);
}
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE);
}
public void onUpgrade(SQLiteDatabase db,
int oldVersion, int newVersion){
Log.w("debug", "Version mismatch :" + oldVersion +
" to " + newVersion);
db.execSQL(DROP + TABLE + ";");
onCreate(db);
}
}
public DBAdapter open() throws SQLException {
dbHelper = new NoteOpenHelper(context);
db = dbHelper.getWritableDatabase();
return this;
}
public void close() {
dbHelper.close();
}
public Cursor fetchAllMemo() {
return db.query(TABLE, new String[] {BaseColumns._ID, COL1},
null, null, null, null, "_id DESC");
}
public String addMemo(String memo) {
ContentValues values = new ContentValues();
values.put(COL1, memo);
long id = db.insert(TABLE, null, values);
if(id<0)
return "";
return Long.toString(id);
}
public void delMemo(String id) {
db.delete(TABLE, "_id = ?", new String[] { id });
}
public void modMemo(String id, String memo) {
}
}
첫번째 소스에서 line16~17 부분이 실행이 안됩니다.
리스트 항목 삭제하는 역할을 하는데요. 버튼이벤트로 리스너로 따로 하면 분명 실행되는데
리스트클릭의 dialog안으로 넣으니까 실행이 안됩니다.
혹시.. delMemo를 dialog안으로 넣어 버려서 뭐 전역변수 이런게 잘못 된거가 싶기두 한데..
잘 모르겠어요. 고수님들 도와주세요.
참고로 밑에 코드는 DBAdapter구요..
밑에 line 62~64 부분이 리스트항목을 지우는 부분입니다.




Adapter 안에서 db는 open 하셨나요?