package com.romen.CancerAdvice;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class CancerAdvice extends Activity {
// DB옮기기
public SQLiteDatabase db;
public Cursor cursor;
public SimpleCursorAdapter Adapter = null;
public SimpleCursorAdapter AdapterStomach = null;
private ListView lv;
// 텍스트 검색
EditText inputSearch;
//검색기능
ArrayAdapter<String> adapter;
// Search EditText
public static final String ROOT_DIR = "/data/data/com.romen.CancerAdvice/databases/";
ProductDBHelper mHelper;
public void setDB() {
File folder = new File(ROOT_DIR);
folder.mkdir();
if (folder.exists()) {
} else {
folder.mkdirs();
// Toast.makeText(this, "폴더생성", Toast.LENGTH_LONG).show();
}
////////////////////////////////////////////////////// DB파일 로드///////////////////////////////////////////////
AssetManager assetManager = getResources().getAssets();
File outfile = new File(ROOT_DIR + "test.db"); // --폰에 위치할 경로
InputStream is = null;
FileOutputStream fo = null;
long filesize = 0;
try {
// --asset 폴더 및 복사할 DB 지정
is = assetManager.open("test.db", AssetManager.ACCESS_BUFFER);
filesize = is.available(); // --사이즈 검증
// 파일이 없거나 패키지 폴더에 설치된 DB파일이 포함된 DB파일 보다 크기가 같지않을 경우 DB파일을 덮어 쓴다.
if (outfile.length() <= 0) {
byte[] tempdata = new byte[(int) filesize];
is.read(tempdata);
is.close();
outfile.createNewFile();
fo = new FileOutputStream(outfile);
fo.write(tempdata);
fo.close();
} else {
// Toast.makeText(this, "db있음", Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
Toast.makeText(this, "db이동실패", Toast.LENGTH_LONG).show();
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@Override
public void onCreate(Bundle savedInstanceState) {
setDB();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputSearch = (EditText) findViewById(R.id.inputSearch);
String cs[] =new String[]{ }; // 이쪽이문제
adapter = new ArrayAdapter<String>(this, R.layout.mylist, R.id.text1,cs);
lv = (ListView) findViewById(R.id.list);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
CancerAdvice.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
///////////////////////db내용////////////////////
ListView list = (ListView) findViewById(R.id.list);
mHelper = new ProductDBHelper(this);
db = mHelper.getWritableDatabase();
cursor = db.rawQuery("SELECT * FROM test where title='관리'", null);
startManagingCursor(cursor);
AdapterStomach = new SimpleCursorAdapter(list.getContext(),
R.layout.mylist, cursor, new String[] { "content1" },
new int[] { R.id.text1 });
list.setAdapter(AdapterStomach);
//////////////////////////////////////// 클릭시 나오는 화면 ///////////////////////////////////////
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
cursor = db.rawQuery("SELECT * FROM test where title='관리'",
null);
startManagingCursor(cursor);
Cursor c = (Cursor) AdapterStomach.getItem(position);
String note = c.getString(2);
AlertDialog.Builder bld = new AlertDialog.Builder(
CancerAdvice.this);
bld.setTitle(c.getString(2));
bld.setMessage(note);
bld.setIcon(R.drawable.ic_menu_edit);
bld.setPositiveButton("Close",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
}
});
bld.show();
// Toast.makeText(getApplicationContext(), note,
// Toast.LENGTH_LONG).show();
}
});
}
class ProductDBHelper extends SQLiteOpenHelper {
public ProductDBHelper(Context context) {
super(context, "test.db", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
ㅇ
}
}
}
제가 db를 이용해서 리스트로 출력은 했는데요..
거기에 검색기능을 더해서 검색하면 리스트에 있는 내용만 추출하게 하고싶은데
그 기능이 잘안되네요..
arrayAdaper<String>(this.R.layout.mylist.R.id.text1.cs) 이부분에서 cs가 list, String 부분만 들어가는 것 같더라구요.
그래서 그걸 db결과값이랑 연결시켜서 string으로 만들어야하는데.. 좀 부탁드리겠습니다.