package com.example.a.wiho;
import android.app.Activity;
import android.app.AlertDialog;
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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class PlusActivity extends Activity {
private ArrayList<String> aitems;
private EditText eName;
private EditText eAge;
MyDBHelper mHelper;
SQLiteDatabase db;
Cursor cursor;
MyCursorAdapter myAdapter;
final static String KEY_ID = "_id";
final static String KEY_NAME = "name";
final static String KEY_AGE = "age";
final static String TABLE_NAME = "mytable";
final static String querySelectAll = String.format("SELECT * FROM %s", TABLE_NAME);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plus);
ListView list = (ListView) findViewById(R.id.lv_name_age);
mHelper = new MyDBHelper(this);
db = mHelper.getWritableDatabase();
cursor = db.rawQuery(querySelectAll, null);
aitems = new ArrayList<String>();
myAdapter = new MyCursorAdapter(this, cursor, aitems);
list.setAdapter(myAdapter);
list.setOnItemLongClickListener(new ListViewItemLongClickListener());
}
private Button.OnClickListener clickListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
eName = (EditText) findViewById(R.id.et_name);
eAge = (EditText) findViewById(R.id.et_age);
String name = eName.getText().toString();
String age = eAge.getText().toString();
if (eName.getText().toString().equals(""))
{
Toast.makeText(PlusActivity.this, "Wifi의 이름을 입력하세요.", Toast.LENGTH_SHORT).show();
}
// 와이파이 비밀번호가 없을 시
else if(eAge.getText().toString().equals(""))
{
// 문자열은 ''로 감싸야 한다.
String query = String.format(
"INSERT INTO %s VALUES ( null, '%s', null);", TABLE_NAME, name, age);
db.execSQL(query);
// 아래 메서드를 실행하면 리스트가 갱신된다. 하지만 구글은 이 메서드를 deprecate한다. 고로 다른 방법으로 해보자.
// cursor.requery();
cursor = db.rawQuery(querySelectAll, null);
myAdapter.changeCursor(cursor);
}
// 와이파이 이름과 비밀번호가 다 있을 시
else
{
// 문자열은 ''로 감싸야 한다.
String query = String.format(
"INSERT INTO %s VALUES ( null, '%s', %s );", TABLE_NAME, name, age);
db.execSQL(query);
// 아래 메서드를 실행하면 리스트가 갱신된다. 하지만 구글은 이 메서드를 deprecate한다. 고로 다른 방법으로 해보자.
// cursor.requery();
cursor = db.rawQuery(querySelectAll, null);
myAdapter.changeCursor(cursor);
}
eName.setText( "" );
eAge.setText( "" );
// 저장 버튼 누른 후 키보드 안보이게 하기
InputMethodManager imm =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(eAge.getWindowToken(), 0);
}
};
class MyCursorAdapter extends CursorAdapter {
@SuppressWarnings("deprecation")
public MyCursorAdapter(Context context, Cursor c, ArrayList<String> aitems) {
super(context, c);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView tvName = (TextView) view.findViewById(R.id.tv_name);
TextView tvAge = (TextView) view.findViewById(R.id.tv_age);
String name = cursor.getString(cursor.getColumnIndex(KEY_NAME));
String age = cursor.getString(cursor.getColumnIndex(KEY_AGE));
Log.d("스트링 확인", name + ", " + age);
tvName.setText(name);
tvAge.setText(age);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.alist_item, parent, false);
return v;
}
}
class MyDBHelper extends SQLiteOpenHelper {
public MyDBHelper(Context context) {
super(context, "MyData.db", null, 2);
}
public void onCreate(SQLiteDatabase db) {
// AUTOINCREMENT 속성 사용 시 PRIMARY KEY로 지정한다.
String query = String.format("CREATE TABLE %s ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "%s TEXT, "
+ "%s INTEGER );", TABLE_NAME, KEY_NAME, KEY_AGE);
db.execSQL(query);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String query = String.format("DROP TABLE IF EXISTS %s", TABLE_NAME);
db.execSQL(query);
onCreate(db);
}
}
// Long click된 item의 index를 기록
int selectedPos = -1;
// ListView의 item을 길게 클릭
private class ListViewItemLongClickListener implements AdapterView.OnItemLongClickListener
{
@Override
public boolean onItemLongClick(AdapterView<?> parent, final View view, int position, long id)
{
selectedPos = position;
AlertDialog.Builder alertDlg = new AlertDialog.Builder(view.getContext());
alertDlg.setTitle(R.string.alert_title_question);
// '예' 버튼 클릭
alertDlg.setNegativeButton( R.string.button_yes, new DialogInterface.OnClickListener()
{
@Override
public void onClick( DialogInterface dialog, int which )
{
aitems.remove(selectedPos);
// method를 호출하지 않을 경우
myAdapter.notifyDataSetChanged();
// AlertDialog를 종료
dialog.dismiss();
}
});
// '아니오' 버튼 클릭
alertDlg.setPositiveButton( R.string.button_no, new DialogInterface.OnClickListener()
{
@Override
public void onClick( DialogInterface dialog, int which ) {
// AlertDialog를 닫는다.
dialog.dismiss();
}
});
alertDlg.setMessage(String.format(getString(R.string.alert_msg_adelete), aitems.get(position)));
alertDlg.show();
return false;
}
}
}