public class MemoHome extends Activity { // 리스트뷰 구현
ArrayList<String> arrlist_name = null;
ArrayList<String> arr_id_list = null;
ArrayList<String> arrlist_memo = null;
SQLiteDatabase database;
ListView list;
String dbName = "memo_db_name";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memo_home);
database = openOrCreateDatabase(dbName, MODE_WORLD_WRITEABLE, null);
arrlist_name = new ArrayList<String>();
arr_id_list = new ArrayList<String>();
arrlist_memo = new ArrayList<String>();
selectData();
ArrayAdapter<String> Adapter;
Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, arrlist_name);
list = (ListView)findViewById(R.id.listView);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setAdapter(Adapter);
}
public void selectData(){
String sql = "select * from memo_table";
Cursor result = database.rawQuery(sql,null );
result.moveToFirst();
while(!result.isAfterLast()){
arr_id_list.add(result.getString(0));
arrlist_name.add(result.getString(1));
arrlist_memo.add(result.getString(2));
result.moveToNext();
}
result.close();
}
sql구문 입니다.
String createTable = "create table memo_table ( _id integer primary key autoincrement, title text, younguk text);
String sql = "insert into memo_table values (null, '"+ title +"', '" + young + "');";
이렇게해서 타이틀문자와 키문자를 입력받아서 db에 저장합니다.
그리고 이제 다른 액티비티에서 db를 호출하게 되어서 리스트뷰로 출력할려니 아무것도 뜨지않습니다.
값 2개중 하나를 지우고 실행을 하면 잘 뜹니다.
package example.memo;
import java.io.*;
import android.app.*;
import android.content.*;
import android.database.sqlite.*;
import android.graphics.*;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
public class TxtActivity extends Activity {
SQLiteDatabase database;
String dbNmae = "memo_db_name"; // db이름선언
String createTable = "create table memo_table ( _id integer primary key autoincrement, title text, younguk text);"; // 테이블선언쿼리
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.txt);
createDatabase();
createTable();
}
public void mOnClick(View v){
switch(v.getId()){
case R.id.action:
ActionBar ab = getActionBar();
if(ab.isShowing()){
ab.hide();
((Button)v).setText("액션바 나타내기");
}else{
ab.show();
((Button)v).setText("액션바 숨기기");
}
break;
case R.id.btnmenu:
finish();
break;
case R.id.btnsave:
EditText id =(EditText)findViewById(R.id.editname);
EditText memo = (EditText)findViewById(R.id.editmemo);
String text_name = id.getText().toString();
String younguk_memo= memo.getText().toString();
insertData(text_name,younguk_memo);
Intent intent = new Intent(TxtActivity.this,MemoHome.class);
startActivity(intent);
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.txtmemo, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
String text = null;
EditText mEdit;
switch(item.getItemId()){
case R.id.black:
mEdit = (EditText)findViewById(R.id.editmemo);
mEdit.setTextColor(Color.BLACK);
break;
case R.id.red:
mEdit = (EditText)findViewById(R.id.editmemo);
mEdit.setTextColor(Color.RED);
break;
case R.id.blue:
mEdit = (EditText)findViewById(R.id.editmemo);
mEdit.setTextColor(Color.BLUE);
break;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("deprecation")
public void createDatabase(){
database = openOrCreateDatabase(dbNmae ,MODE_WORLD_WRITEABLE ,null);
}
public void createTable(){
try{
database.execSQL(createTable);
}catch(Exception e){
e.printStackTrace();
}
}
private void insertData(String title, String young){
database.beginTransaction();
try{
String sql = "insert into memo_table values (null, '"+ title +"', '" + young + "');";
database.execSQL(sql);
database.setTransactionSuccessful();
}catch(Exception e){
e.printStackTrace();
}finally{
database.endTransaction();
}
}
}
코드에 문제가 있는지 봐주시면 감사하겠습니다.
그리고 열을 몇개든 넣고 리스트뷰에는 첫번째 열을 제목으로 나타나게 하려면 어떻게 구현해야될까요?