티스토리 뷰

반응형

// main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
</LinearLayout>

 

// name.xml

<?xml version="1.0" encoding= "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:orientation  = "vertical"
    android:layout_width = "fill_parent"
    android:layout_height = "fill_parent"
    >
<EditText
 android:id     = "@+id/EdtName"
 android:layout_width  = "fill_parent"
 android:layout_height = "wrap_content"
/>
</LinearLayout>

 

// DataBase.java

package pkg.DataBase;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;

public class DataBase extends ListActivity {
 ArrayList<String>  arGeneral;
 WordDBHelper   mHelper;
 SQLiteDatabase  db;
 int     Pos;
 String    Name;
 EditText    EdtName;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mHelper = new WordDBHelper(this);
        
        DataToList();
    }
    
    public void onListItemClick(ListView list, View view, int position, long id) {
     Pos = position;
     
     list.setOnItemLongClickListener(new OnItemLongClickListener(){
      public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {  
       Pos = position;
       
       new AlertDialog.Builder(DataBase.this)
    .setTitle("선택한 메모을 삭제 하시겠습니까?")
    .setIcon(R.drawable.icon)
    .setPositiveButton("삭제", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int whichButton){
      String Sql, Where;
      
      db   = mHelper.getWritableDatabase();
      Sql  = "DELETE FROM memo WHERE name = ";
      Where  = arGeneral.get(Pos);
      Sql     = Sql + "'" + Where + "'";
      
      db.execSQL(Sql);
      mHelper.close();
      
      DataToList();
     }
    })
    .setNeutralButton("취소", null)
    .show();
       
       return true;
      }  
     });
     
     final   LinearLayout linear = (LinearLayout) View.inflate(DataBase.this, R.layout.name, null);
     EdtName = (EditText)linear.findViewById(R.id.EdtName);
     
     
     Name = arGeneral.get(Pos);
     EdtName.setText(Name);
     
  new AlertDialog.Builder(DataBase.this)
  .setTitle("메모 수정")
  .setIcon(R.drawable.icon)
  .setView(linear)
  .setPositiveButton("수정", new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int whichButton){
    String Sql, Str;
    
    db = mHelper.getWritableDatabase();
    Str = EdtName.getText().toString();
    Sql = "UPDATE memo SET name = '" + Str + "' WHERE name = '" + Name + "'";
    db.execSQL(Sql);
    
    mHelper.close();
    
    DataToList();
   }
  })
  .setNeutralButton("취소", null)
  .show();
    }
    
    @Override
 public boolean onCreateOptionsMenu(android.view.Menu menu) {
  super.onCreateOptionsMenu(menu);
  
  MenuItem item = menu.add(0, 1, 0, "추 가");
  item.setIcon(R.drawable.icon);
  item.setAlphabeticShortcut('a');
  // menu.add(0, 2, 0, "수 정").setIcon(R.drawable.icon);
  // menu.add(0, 3, 0, "삭 제").setIcon(R.drawable.icon);
  
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  switch(item.getItemId()){
   case 1 : {
       final  LinearLayout linear = (LinearLayout) View.inflate(DataBase.this, R.layout.name, null);
       
       new AlertDialog.Builder(DataBase.this)
       .setTitle("추가할 메모을 입력하세요~")
       .setIcon(R.drawable.icon)
       .setView(linear)
       .setPositiveButton("추가", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton){
         String   Str;
         EdtName = (EditText)linear.findViewById(R.id.EdtName);
         ContentValues row;
         
         db  = mHelper.getWritableDatabase();
         Str = EdtName.getText().toString();
         row = new ContentValues();
         
         row.put("name", Str);
         db.insert("memo", null, row);
         
         mHelper.close();
         
         DataToList();
        }
       })
       .setNeutralButton("취소", null)
       .show();
      }
      break;
   case 2 : break;
   case 3 : break;
  }
  
  return true;
 }
 
 public void DataToList() {
  db = mHelper.getWritableDatabase();
  Cursor  cursor;
  String Result;
  arGeneral = new ArrayList<String>();
  
  cursor = db.rawQuery("SELECT name FROM memo", null);
   
  while(cursor.moveToNext()) {
   Result = cursor.getString(0);
   arGeneral.add(Result);
  }
  
        // 어댑터 준비
        ArrayAdapter<String> Adapter;
        Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,  arGeneral);
       
        setListAdapter(Adapter);
        
  cursor.close();
  mHelper.close();
 }
    
}

class WordDBHelper extends SQLiteOpenHelper {
 public WordDBHelper(Context context) {
  super(context, "memo.db", null, 1);
 }
 
 public void onCreate(SQLiteDatabase db) {
  db.execSQL("CREATE TABLE memo(_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
       "name TEXT);");
 }
 
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  // db.execSQL("DROP TABLE IF EXISTS memo");
  // onCreate(db);
 }
}

 

반응형

'Android > Android Studio' 카테고리의 다른 글

내부 스레드 & 핸들러  (0) 2019.04.04
외부 스레드 & 핸들러  (0) 2019.04.04
ProgressDialog  (0) 2019.04.04
체크 박스 리스트 뷰 만들고 배경 넣기  (0) 2019.04.04
컨트롤 배치 (수직, 수평)  (0) 2019.04.04
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday