public class MyLifeActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// DB 파일이 존재하면 제거
if (Arrays.binarySearch(databaseList(), "mylife.db") >= 0)
{
deleteDatabase("mylife.db");
}
SQLiteDatabase db = openOrCreateDatabase("mylife.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
//t_loc : id, name, type
String sql1 = "CREATE TABLE t_loc (id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, type TEXT);";
db.execSQL(sql1);
//t_visit : id, count , date, locid
String sql2 =
"CREATE TABLE t_visit (id INTEGER PRIMARY KEY AUTOINCREMENT , count INTEGER, date DATE, locid INTEGER NOT NULL CONSTRAINT locid REFERENCES t_loc(id) ON DELETE CASCADE);";
db.execSQL(sql2);
//t_loc 테이블에 레코드 저장
ContentValues rec1 = new ContentValues();
rec1.put("name", "탐앤탐스");
rec1.put("type", "커피숍");
long pid = db.insert("t_loc", null, rec1);
//t_visit 테이블에 레코드 저장
Date today = new Date(java.lang.System.currentTimeMillis());
ContentValues rec2 = new ContentValues();
rec2.put("count", 1);
rec2.put("date", today.toLocaleString());
rec2.put("locid", pid);
db.insert("t_visit", null, rec2);
//select * from t_loc
Cursor c = db.query("t_loc", null, null, null, null, null, null);
startManagingCursor(c);
// t_loc 레코드 표시
c.moveToFirst();
while (c.isAfterLast() == false) {
String tmp = " || ";
for (int i = 0; i < c.getColumnCount(); i++ ){
tmp = tmp.concat(c.getString(i) + " || ");
}
TextView tv = (TextView)findViewById(R.id.tv1);
tv.setText(tmp);
c.moveToNext();
}
SimpleCursorAdapter adapter1 = new SimpleCursorAdapter(this, android.R.layout.simple_gallery_item, c, new String[]{"name"}, new int[]{android.R.id.text1});
ListView lv = (ListView)findViewById(R.id.listView1);
lv.setAdapter(adapter1);
}
}
텍스트뷰에선 표시가 되었는데..
SimpleCursorAdapter 를 통해서 리스트뷰로 뿌리려는데 애플리케이션이 자꾸 종료되네요
밑줄치고 짙은곳에서 에러가..
코드상 에러는 없는데 혹시 이유 아시는분 답변좀




SimpleCursorAdapter를 사용하려면 primary key field name이 _id 이어야 합니다.