마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 데이터베이스를 다른 액티비티에서 리스트뷰로 열고 싶습니다.

0 추천

이런저런 예제들을 섞어서 아래와 같은 액티비티를 만들었는데요.

데이터베이스커서라는게 데이터베이스에 대한 에디트를 하는 걸로 아는데...

이 코드에서는 한 소스파일에 데이터베이스도 열고 리스트뷰 뿌려주고 이런게 다 들어잇어요ㅠㅠ

데이터베이스에 대한거 따로, 리스트뷰로 뿌려주는 화면 따로 만들고 싶은데...

그걸 어떻게 해야할 지 모르겠네요ㅠㅠ

 

 

 

package com.example.callmeEx1;
 
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
 
 
public class ComplainMainEx1 extends ActionBarActivity {
 
TextView text01;
SQLiteDatabase database;
String tableName = "CUSTOMER";
 
DatabaseHelper helper;
 
ListView list01;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_complain);
        
        text01 = (TextView) findViewById(R.id.text01);
        list01 = (ListView) findViewById(R.id.list01);
        
              
        Button button01 = (Button) findViewById(R.id.button01);
        button01.setOnClickListener(new OnClickListener() {
 
@Override
public void onClick(View v) {
createDatabase();
}
});
        
        Button button02 = (Button) findViewById(R.id.button02);
        button02.setOnClickListener(new OnClickListener() {
 
@Override
public void onClick(View v) {
Cursor cursor = queryData();
 
if(cursor != null){
startManagingCursor(cursor);
 
String[] columns = {"name"};
int[] resIds = {R.id.text01};
 
SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.listitem, cursor, columns, resIds);
list01.setAdapter(adapter);
}
 
}
 
 
});
        
        list01.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
Intent intent = new Intent(getApplicationContext(),
ComplainSecondEx1.class);
startActivity(intent);
 
}
       
});
        
    }
 
 
 
 
 
 
private void createDatabase() {
 
String name = "customer.db";
int version = 2;
 
 
helper = new DatabaseHelper(this, name, null, version);
database = helper.getWritableDatabase();
 
//database = openOrCreateDatabase(name, MODE_WORLD_WRITEABLE, null);
 
 
}
 
 
private Cursor queryData(){
String sql = "select _id, name, age from " + tableName + " where age > 18";
 
Cursor cursor = database.rawQuery(sql, null);
 
if(cursor != null){
int count = cursor.getCount();
text01.append("데이터를 조회했어요. 레코드 갯수 : " + count + "\n");
 
 
}
return cursor;
 
}
 
class DatabaseHelper extends SQLiteOpenHelper{
 
public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
 
}
 
@Override
public void onCreate(SQLiteDatabase db) {
createTable(db);
insertData(db);
 
text01.append("헬퍼를 이용해서 데이터베이스가 만들어졌어요.\n");
}
 
 
 
@Override
public void onOpen(SQLiteDatabase db) {
text01.append("헬퍼를 이용해서 데이터베이스를 오픈했어요.\n");
super.onOpen(db);
}
 
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
text01.append("헬퍼를 이용해서 데이터베이스를 업그레이드했어요. 이전버전 : " + oldVersion + ",현재버전 : " + newVersion + "\n");
}
 
private void createTable(SQLiteDatabase db){
 
String sql = "create table " + tableName + "(_id integer, name text, age integer)";
 
try{
db.execSQL(sql);
 
text01.append("헬퍼 안에서 테이블이 만들어졌어요." + tableName + "\n");
} catch(Exception ex){
text01.append("테이블 만들 때 예외." + ex.getMessage() + "\n");
ex.printStackTrace();
}
 
 
}
 
private void insertData(SQLiteDatabase db){
 
db.beginTransaction();
 
try{
String sql = "insert into " + tableName + "(_id, name, age) values(100, '홍길동', 21)";
 
db.execSQL(sql);
 
sql = "insert into " + tableName + "(_id, name, age) values(200, '소녀시대', 19)";
 
db.execSQL(sql);
 
db.setTransactionSuccessful();
 
text01.append("헬퍼 안에서 데이터를 넣었어요." + "\n");
 
} catch(Exception ex){
text01.append("데이터 추가할 때 예외." + ex.getMessage() + "\n");
ex.printStackTrace();
}finally{
db.endTransaction();
}
 
 
}
 
}
 
 
}
1stwook (120 포인트) 님이 2014년 9월 16일 질문

1개의 답변

+1 추천
쎄미 (162,410 포인트) 님이 2014년 9월 16일 답변
...