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

sql구문하고 메모장 저장-> 리스트뷰 출력입니다.. 잘 안되네요 ㅠㅠ [closed]

0 추천



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();
		}
	}
	

}

코드에 문제가 있는지 봐주시면 감사하겠습니다.

그리고 열을 몇개든 넣고 리스트뷰에는 첫번째 열을 제목으로 나타나게 하려면 어떻게 구현해야될까요?

 

 

질문을 종료한 이유: 알아냈습니다
신참개발자 (380 포인트) 님이 2014년 11월 28일 질문
신참개발자님이 2014년 12월 1일 closed
...