일단 과제는 아님
<pre>package com.example.favoritesql;
import java.util.ArrayList;
import java.util.Collection;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.ViewGroup;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
ArrayList<String> items = new ArrayList<String>();
ArrayAdapter<String> itemsDBAdapter;
DBHelper mHelper;
EditText mText;
Button btn;
ListView listview;
Cursor cursor;
SQLiteDatabase db;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHelper = new DBHelper(this);
mText = (EditText)findViewById(R.id.editText);
btn = (Button)findViewById(R.id.select);
listview = (ListView)findViewById(R.id.listview);
// listview.setAdapter(itemsDBAdapter);
// registerForContextMenu(listview);
}
public void m(View v) {
SQLiteDatabase db;
ContentValues row;
switch (v.getId()) {
// 데이터 추가
case R.id.insert:
db = mHelper.getWritableDatabase();
//insert 메서드로 삽입
row = new ContentValues();
row.put(\"name\", \"\");
row.put(\"adress\",mText.getText().toString());
db.insert(\"Customer\", null, row);
// SQL 명령으로 삽입
/* db.execSQL(\"INSERT INTO customer VALUES (null, \'임꺽정\', \'서울\', 40);\");
db.execSQL(\"INSERT INTO customer VALUES (null, \'이순신\', \'부산\', 35);\"); */
mHelper.close();
Toast.makeText(this, \"저장되었습니다.\", 3000).show();
break;
/* // 데이터 삭제
case R.id.delete:
db = mHelper.getWritableDatabase();
// delete 메서드로 삭제
db.delete(\"customer\", null, null);
// SQL 명령으로 삭제
//db.execSQL(\"DELETE FROM customer;\");
mHelper.close();
mText.setText(\"테이터 삭제 성공\");
break;
// 데이터 수정 (서울을 속초로 수정)
case R.id.update:
db = mHelper.getWritableDatabase();
// update 메서드로 갱신
//row = new ContentValues();
//row.put(\"adress\", \"속초\");
//db.update(\"customer\", row, \"adress = \'홍길동\'\", null);
// SQL 명령으로 갱신
db.execSQL(\"UPDATE customer SET adress = \'대전\' WHERE name = \'홍길동\';\");
mHelper.close();
mText.setText(\"데이터 수정 완료\");
break;
*/
//데이터 조회
case R.id.select:
db = mHelper.getReadableDatabase();
// 안드로이드의 Cursor 클래스는 ResultSet과 유사하다.
Cursor cursor1;
// query 메서드로 읽기
//cursor = db.query(\"customer\", new String[]
//{\"name\", \"adress\", \"age\"}, null, null, null, null, null);
// SQL 명령으로 읽기
cursor1 = db.rawQuery(\"SELECT name, adress FROM Customer\", null);
String[] Result = new String[1];
while (cursor1.moveToNext()) {
int i =0;
String name = cursor1.getString(0);
String adress = cursor1.getString(1);
Result[i] += (name + \"\" + adress + \"\\n\");
Result[i] = Result[i].substring(4);
}
if(cursor1.getCount() > 0){
itemsDBAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Result);
listview.setAdapter(itemsDBAdapter);
//listview.setChoiceMode(listview.CHOICE_MODE_SINGLE);
}
else {
mText.setText(\"데이터가 없습니다\");
}
listview.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
// TODO Auto-generated method stub
/* SQLiteDatabase db;
db = mHelper.getReadableDatabase();
Cursor cursor;
String str = new String();
cursor = db.rawQuery(\"SELECT adress FROM Customer\", null);
// String name = cursor.getString(0);
String adress = cursor.getString(1);
str += ( adress + \"\\n\");*/
//cursor.moveToPosition(position);
//String str = cursor.getString(cursor.getColumnIndex(\"address\"));
String str = (String)itemsDBAdapter.getItem(position);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(str));
MainActivity.this.startActivity(intent);
}
});
cursor1.close();
mHelper.close();
break;
}
}
}
/* WordDBHelper에 부모 클래스인 안드로이드의 SQLiteOpenHelper 클래스는 많은 도움을 준다.
1. onCreate(SQLiteDatabase db 메서드로 DB를 생성하거나, DB가 있으면 열기를 한다,
2. onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 메서드로 DB 업데이트도 한다.
*/
class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, \"Customer.db\", null, 1);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(\"CREATE TABLE Customer ( _id INTEGER PRIMARY KEY AUTOINCREMENT, \" +
\"name TEXT, adress TEXT);\");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(\"DROP TABLE IF EXISTS dic\");
onCreate(db);
}
}
</pre>
안드로이드에서 SQLite를 이용해서 리스트뷰로 DB내용을 뿌려주고
리스트뷰 해당 아이템을 클릭하면 웹브라우저가 열리게 클릭이벤트를 만드는데
클릭을 해도 안먹혀;; 뭐가 잘못된지 모르겠음 인터넷 찾아보고 밤새면서 해도 안되더라고;;;
어레이어댑터고 지랄이고 다 써봤는데도 안됨...
횽들 좀 도와줘
<pre>package com.example.favoritesql;
import java.util.ArrayList;
import java.util.Collection;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.ViewGroup;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
ArrayList<String> items = new ArrayList<String>();
ArrayAdapter<String> itemsDBAdapter;
DBHelper mHelper;
EditText mText;
Button btn;
ListView listview;
Cursor cursor;
SQLiteDatabase db;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHelper = new DBHelper(this);
mText = (EditText)findViewById(R.id.editText);
btn = (Button)findViewById(R.id.select);
listview = (ListView)findViewById(R.id.listview);
// listview.setAdapter(itemsDBAdapter);
// registerForContextMenu(listview);
}
public void m(View v) {
SQLiteDatabase db;
ContentValues row;
switch (v.getId()) {
// 데이터 추가
case R.id.insert:
db = mHelper.getWritableDatabase();
//insert 메서드로 삽입
row = new ContentValues();
row.put(\"name\", \"\");
row.put(\"adress\",mText.getText().toString());
db.insert(\"Customer\", null, row);
// SQL 명령으로 삽입
/* db.execSQL(\"INSERT INTO customer VALUES (null, \'임꺽정\', \'서울\', 40);\");
db.execSQL(\"INSERT INTO customer VALUES (null, \'이순신\', \'부산\', 35);\"); */
mHelper.close();
Toast.makeText(this, \"저장되었습니다.\", 3000).show();
break;
/* // 데이터 삭제
case R.id.delete:
db = mHelper.getWritableDatabase();
// delete 메서드로 삭제
db.delete(\"customer\", null, null);
// SQL 명령으로 삭제
//db.execSQL(\"DELETE FROM customer;\");
mHelper.close();
mText.setText(\"테이터 삭제 성공\");
break;
// 데이터 수정 (서울을 속초로 수정)
case R.id.update:
db = mHelper.getWritableDatabase();
// update 메서드로 갱신
//row = new ContentValues();
//row.put(\"adress\", \"속초\");
//db.update(\"customer\", row, \"adress = \'홍길동\'\", null);
// SQL 명령으로 갱신
db.execSQL(\"UPDATE customer SET adress = \'대전\' WHERE name = \'홍길동\';\");
mHelper.close();
mText.setText(\"데이터 수정 완료\");
break;
*/
//데이터 조회
case R.id.select:
db = mHelper.getReadableDatabase();
// 안드로이드의 Cursor 클래스는 ResultSet과 유사하다.
Cursor cursor1;
// query 메서드로 읽기
//cursor = db.query(\"customer\", new String[]
//{\"name\", \"adress\", \"age\"}, null, null, null, null, null);
// SQL 명령으로 읽기
cursor1 = db.rawQuery(\"SELECT name, adress FROM Customer\", null);
String[] Result = new String[1];
while (cursor1.moveToNext()) {
int i =0;
String name = cursor1.getString(0);
String adress = cursor1.getString(1);
Result[i] += (name + \"\" + adress + \"\\n\");
Result[i] = Result[i].substring(4);
}
if(cursor1.getCount() > 0){
itemsDBAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Result);
listview.setAdapter(itemsDBAdapter);
//listview.setChoiceMode(listview.CHOICE_MODE_SINGLE);
}
else {
mText.setText(\"데이터가 없습니다\");
}
listview.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
// TODO Auto-generated method stub
/* SQLiteDatabase db;
db = mHelper.getReadableDatabase();
Cursor cursor;
String str = new String();
cursor = db.rawQuery(\"SELECT adress FROM Customer\", null);
// String name = cursor.getString(0);
String adress = cursor.getString(1);
str += ( adress + \"\\n\");*/
//cursor.moveToPosition(position);
//String str = cursor.getString(cursor.getColumnIndex(\"address\"));
String str = (String)itemsDBAdapter.getItem(position);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(str));
MainActivity.this.startActivity(intent);
}
});
cursor1.close();
mHelper.close();
break;
}
}
}
/* WordDBHelper에 부모 클래스인 안드로이드의 SQLiteOpenHelper 클래스는 많은 도움을 준다.
1. onCreate(SQLiteDatabase db 메서드로 DB를 생성하거나, DB가 있으면 열기를 한다,
2. onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 메서드로 DB 업데이트도 한다.
*/
class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, \"Customer.db\", null, 1);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(\"CREATE TABLE Customer ( _id INTEGER PRIMARY KEY AUTOINCREMENT, \" +
\"name TEXT, adress TEXT);\");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(\"DROP TABLE IF EXISTS dic\");
onCreate(db);
}
}
</pre>
댓글 0