package com.andro;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class MemoListActivity extends Activity{
ArrayAdapter<String> mAdapter;
DBManager dbmgr;
SQLiteDatabase sql;
ListView lv;
ArrayList<String> AL;
Cursor cursor;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dbmgr = new DBManager(MemoListActivity.this);
setTitle("목 록");
AL = new ArrayList<String>();
lv = (ListView)findViewById(R.id.list);
mAdapter = new ArrayAdapter<String>(MemoListActivity.this,android.R.layout.simple_list_item_single_choice,
AL);//
lv.setAdapter(mAdapter);
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
lv.setOnItemClickListener(mItemClickListener);
Button btn_all = (Button)findViewById(R.id.btn_all);
btn_all.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
sql=dbmgr.getWritableDatabase();
sql.execSQL("delete from MEMO");
Toast.makeText(MemoListActivity.this, mAdapter.getCount()+"개의 메모가 삭제 되었습니다.",Toast.LENGTH_SHORT).show();
mAdapter.clear();
}
});
Button btn_del = (Button)findViewById(R.id.btn_del);
btn_del.setOnClickListener(new View.OnClickListener() {//삭제버튼
public void onClick(View v) {
int id = lv.getCheckedItemPosition();
if(id != ListView.INVALID_POSITION) {
AL.remove(id);
lv.clearChoices();
mAdapter.notifyDataSetChanged();
}
}
});
Button btn_re = (Button)findViewById(R.id.btn_re);
btn_re.setOnClickListener(new View.OnClickListener() {//편집버튼
public void onClick(View v) {
int id = lv.getCheckedItemPosition();
if(id != ListView.INVALID_POSITION){
String IT = AL.get(id).toString();
Intent it = new Intent(MemoListActivity.this, GetActivity.class);
it.putExtra("Title", IT);
startActivityForResult(it,1);
finish();
}
}
});
Button button = (Button)findViewById(R.id.btn_add);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
addStringData();
}
}); //추가버튼
}
private void addStringData(){ //DB 값 넘겨주는걸로 다시 만들어야됨.
EditText edit = (EditText)findViewById(R.id.edit_text);
if(edit.getText().toString().length()<=0){
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("경 고 창");
alert.setMessage("값을 입력 하세요.");
alert.setPositiveButton("확인", null);
alert.show();
}//경고창
try{
sql = dbmgr.getWritableDatabase();
sql.execSQL("insert into MEMO values('"+edit.getText().toString()+"',null);");
cursor = sql.rawQuery("select title from MEMO", null);
while (cursor.moveToNext()){
mAdapter.add(cursor.getString(0));
}
cursor.close();
dbmgr.close();
}catch(SQLiteException e){
Toast.makeText(MemoListActivity.this, e.toString(), Toast.LENGTH_LONG).show();
//에러처라부분
}
}
AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() { //Toast
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String mes = "제 목 = " + AL.get(position);
Toast.makeText(MemoListActivity.this, mes, Toast.LENGTH_SHORT).show();
}
}; // 아이템 선택시 제목 Toast로 띄워주기
}
위와같은 소스를 사용할 경우
맨처음 Test 1을 입력하면 Test 1 만 listview 에 들어갑니다.
하지만 Test 2를 다시 입력하면 Test 1 과 함께 같이 들어갑니다 ㅠㅠ
ex)Test 1 입력시
Test 1 <<ㅎ나만 표시
ex2)Test 2 입력시
Test 1
Test 1
Test 2 << 즉 모든 DB의 값을 가져오는것 같은데 어디를 손봐줘야 될까요 ?? 도움이 필요합니다!