안드로이드 개발 질문/답변
(글 수 45,052)
어플 내부 DB에서 검색하여 리스트 뷰에 결과를 출력하는 기능을 제작중입니다.
결과 검색은 되는거 같은데 리스트에 뜨지를 않습니다.(제목을 완전히 입력해서 검색결과가 하나일때는 리스트가 뜹니다.)
혹시 어느 부분이 잘못된건지 알 수 있을까요?
쿼리부분과 연결부분 코드입니다.
public void SELECT_DB(String Search)
{
Search_List.clear();
try{
SQLiteDatabase db = openOrCreateDatabase("isbn.db", Context.MODE_PRIVATE, null);
Cursor cur = db.rawQuery("SELECT * FROM isbn_data WHERE title like ?", new String[] {"%" + Search + "%"});
startManagingCursor(cur);
while(cur.moveToNext()){
Log.i("MiniApp",cur.getString(0)+"/"+cur.getString(1)+"/"+cur.getString(2)+"/"+cur.getString(3)+"/"+
cur.getString(4)+"/"+cur.getString(5)+"/"+cur.getString(6)+"/"+cur.getString(7)+"/"+
cur.getString(8)+"/"+cur.getString(9)+"/"+cur.getString(10)+"/"+cur.getString(11)+"/"+cur.getString(12)
+"/"+cur.getString(13)+"/"+cur.getString(14)+"/"+cur.getString(15)+"/"+cur.getString(16)+"/"+cur.getString(17)+"/"+cur.getString(18));
if(cur.getString(1).equals(Search))
{
Search_List.add(new Search_List(cur.getString(0),cur.getString(1),cur.getString(2),cur.getString(3),
cur.getString(4),cur.getString(5),cur.getString(6),cur.getString(7),
cur.getString(8),cur.getString(9),cur.getString(10),cur.getString(11),cur.getString(12)
,cur.getString(13),cur.getString(14),cur.getString(15),cur.getString(16),cur.getString(17),cur.getString(18)));
}
}
cur.close();
db.close();
Message msg = mHandler.obtainMessage();
msg.arg1 = 100;
mHandler.sendMessage(msg);
}
catch (SQLException se) {
// TODO: handle exception
Log.e("selectData()Error! : ",se.toString());
}
}
AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view, int position,
long id) {
Log.d("MiniApp" , ""+position);
Intent board = new Intent(BookSearch.this, BookSearch_detail.class);
board.putExtra("image", Search_List.get(position).getIMAGE_URL());
board.putExtra("title", Search_List.get(position).getTITLE());
board.putExtra("jac", Search_List.get(position).getJAC());
board.putExtra("yuc", Search_List.get(position).getYUC());
board.putExtra("rim", Search_List.get(position).getRIM());
board.putExtra("chool", Search_List.get(position).getCHOOL());
board.putExtra("chool_day", Search_List.get(position).getCHOOL_DAY());
board.putExtra("jang", Search_List.get(position).getJANG());
board.putExtra("page", Search_List.get(position).getPAGE());
board.putExtra("size", Search_List.get(position).getSIZE());
board.putExtra("pay", Search_List.get(position).getPAY());
board.putExtra("roop", Search_List.get(position).getGROUP());
board.putExtra("boon", Search_List.get(position).getBOON());
board.putExtra("start_day", Search_List.get(position).getSTART_DAY());
board.putExtra("ban_day", Search_List.get(position).getBAN_DAY());
board.putExtra("end_day", Search_List.get(position).getEND_DAY());
board.putExtra("memo", Search_List.get(position).getMEMO());
board.putExtra("summay", Search_List.get(position).getSUMMARY());
board.putExtra("bookmark", Search_List.get(position).getBOOKMARK());
startActivity(board);
}
};
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.arg1 == 100) {
MyAdapter = new BoardAdapter(BookSearch.this, m_board);
m_board.clear();
for (int i = 0; i < Search_List.size() ; i++) {
m_board.add(new Board(Search_List.get(i).getIMAGE_URL() ,Search_List.get(i).getTITLE() ));
}
MyList = (ListView)findViewById(R.id.serach_list6);
MyList.setOnItemClickListener(mItemClickListener);
MyList.setAdapter(MyAdapter);
}
else if(msg.arg1 ==300)
{
Log.i("MiniApp" , m_board.get(msg.arg2).getIMAGE_URL());
if(m_board.get(msg.arg2).getIMAGE_URL().matches(".*http.*"))
{
ImageDownloader.download(m_board.get(msg.arg2).getIMAGE_URL(), (ImageView) msg.obj);
}
}
}
};
private class BoardAdapter extends BaseAdapter {
LayoutInflater mInflater;
ArrayList<Board> items;
public BoardAdapter(Context context, ArrayList<Board> m_board) {
mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
items = m_board;
}
public int getCount() {
return items.size();
}
public Board getItem(int position) {
return items.get(position);
}
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 1;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.board_list_in1, parent,
false);
}
Board board = items.get(position);
if (board != null) {
ImageView bb = (ImageView) convertView.findViewById(R.id.image_book);
TextView cc = (TextView) convertView.findViewById(R.id.title_book);
if (bb != null) {
Log.d("MiniApp" , ""+position);
Log.d("MiniApp" , ""+board.getTITLE());
Log.d("MiniApp" , ""+board.getIMAGE_URL());
if(board.getIMAGE_URL().matches(".*http.*"))
{
Log.d("MiniApp" , "gogo"+board.getIMAGE_URL());
Message msg = mHandler.obtainMessage();
msg.arg1 = 300;
msg.arg2 = position;
msg.obj = bb;
mHandler.sendMessage(msg);
}
else
{
Uri asd = Uri.parse(board.getIMAGE_URL());
bb.setImageURI(asd);
}
cc.setText(board.getTITLE());
}
}
return convertView;
}
}
//List View
class Board {
private String IMAGE_URL;
private String TITLE;
public Board(String _IMAGE_URL,String _TITLE) {
this.IMAGE_URL = _IMAGE_URL;
this.TITLE = _TITLE;
}
public String getIMAGE_URL() {
return IMAGE_URL;
}
public String getTITLE() {
return TITLE;
}
}
}
그리고 로그 캣 내용입니다.
09-26 20:37:18.853: I/MiniApp(27509): DB Check=true
09-26 20:37:20.583: I/global(27509): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
09-26 20:37:20.653: I/MiniApp(27509): http://book.daum-img.net/R110x160/BOK00018056722IN/나와 호랑이님. 6/카넬//영인/시드노벨/20120601/소설 ///20120909/취미/구입도서/20120909/20120915/20120915/0/0/0
09-26 20:37:20.653: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788926781326/나와 호랑이님 5.5/카넬///시드노벨/20120501/소설 ///20120908/취미/구입도서/20120910/20120915/20120915/0/0/0
09-26 20:37:20.663: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925204604/풀 메탈 패닉. 17/Syouji Gatoh///대원씨아이/20060915/소설 ///20101010/취미/구입도서/0/0/0/0/0/0
09-26 20:37:20.663: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925210179/키리/카베이 유카코///대원씨아이(주)/20070215/소설 ////생활/미구입/0/0/0/0/0/0
09-26 20:37:20.663: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925882666/세인트 영멘. 3/Hikaru Nakamura///학산문화사/20120425/만화 ///20111119/만화/구입도서/20111120/20111125/20111125/0/0/0
09-26 20:37:20.663: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925267432/여기저기. 1/Ishiki///대원씨아이/20100825/만화 ////만화/구입도서/0/0/0/0/0/0
09-26 20:37:20.823: I/ActivityManager(178): Displayed activity com.example.isbnapp/.MainActivity: 2234 ms (total 2234 ms)
09-26 20:37:23.423: I/VibratorService(178): vibratorVolumeOn[mVolume : 4]
09-26 20:37:23.423: E/VibratorService(178): com_android_server_HardwareService.cpp : volume=4 / timeout_ms=80
09-26 20:37:23.423: V/AudioPolicyManagerBase(86): startOutput() output 1, stream 1
09-26 20:37:23.423: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 1
09-26 20:37:23.423: V/AudioPolicyManagerBase(86): getDeviceForStrategy() from cache strategy 0, device 2
09-26 20:37:23.423: V/AudioPolicyManagerBase(86): getNewDevice() selected device 2
09-26 20:37:23.423: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 2 delayMs 0
09-26 20:37:23.423: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 2 or null device for output 1
09-26 20:37:23.423: I/VibratorService(178): vibratorVolumeOn[mTimeout : 80]
09-26 20:37:23.433: V/AudioPolicyManagerBase(86): releaseOutput() 1
09-26 20:37:23.433: I/ActivityManager(178): Starting activity: Intent { cmp=com.example.isbnapp/.BookSearch }
09-26 20:37:23.493: V/AudioPolicyManagerBase(86): stopOutput() output 1, stream 1
09-26 20:37:23.493: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 0
09-26 20:37:23.493: V/AudioPolicyManagerBase(86): getNewDevice() selected device 0
09-26 20:37:23.493: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 0 delayMs 200
09-26 20:37:23.493: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 0 or null device for output 1
09-26 20:37:23.503: I/MiniApp(27509): http://book.daum-img.net/R110x160/BOK00018056722IN/나와 호랑이님. 6/카넬//영인/시드노벨/20120601/소설 ///20120909/취미/구입도서/20120909/20120915/20120915/0/0/0
09-26 20:37:23.513: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788926781326/나와 호랑이님 5.5/카넬///시드노벨/20120501/소설 ///20120908/취미/구입도서/20120910/20120915/20120915/0/0/0
09-26 20:37:23.513: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925204604/풀 메탈 패닉. 17/Syouji Gatoh///대원씨아이/20060915/소설 ///20101010/취미/구입도서/0/0/0/0/0/0
09-26 20:37:23.513: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925210179/키리/카베이 유카코///대원씨아이(주)/20070215/소설 ////생활/미구입/0/0/0/0/0/0
09-26 20:37:23.513: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925882666/세인트 영멘. 3/Hikaru Nakamura///학산문화사/20120425/만화 ///20111119/만화/구입도서/20111120/20111125/20111125/0/0/0
09-26 20:37:23.513: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788925267432/여기저기. 1/Ishiki///대원씨아이/20100825/만화 ////만화/구입도서/0/0/0/0/0/0
09-26 20:37:23.783: I/ActivityManager(178): Displayed activity com.example.isbnapp/.BookSearch: 337 ms (total 337 ms)
09-26 20:37:25.093: I/VibratorService(178): vibratorVolumeOn[mVolume : 20]
09-26 20:37:25.093: E/VibratorService(178): com_android_server_HardwareService.cpp : volume=20 / timeout_ms=1
09-26 20:37:25.093: I/VibratorService(178): vibratorVolumeOn[duration : 1]
09-26 20:37:25.113: E/VibratorService(178): com_android_server_HardwareService.cpp : volume=20 / timeout_ms=21
09-26 20:37:25.113: I/VibratorService(178): vibratorVolumeOn[mVolume : 20]
09-26 20:37:25.113: I/VibratorService(178): vibratorVolumeOn[duration : 21]
09-26 20:37:25.753: D/Finsky(25523): [1] 5.onFinished: Installation state replication succeeded.
09-26 20:37:26.033: V/AudioPolicyManagerBase(86): startOutput() output 1, stream 1
09-26 20:37:26.033: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 1
09-26 20:37:26.033: V/AudioPolicyManagerBase(86): getDeviceForStrategy() from cache strategy 0, device 2
09-26 20:37:26.033: V/AudioPolicyManagerBase(86): getNewDevice() selected device 2
09-26 20:37:26.033: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 2 delayMs 0
09-26 20:37:26.033: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 2 or null device for output 1
09-26 20:37:26.033: V/AudioPolicyManagerBase(86): releaseOutput() 1
09-26 20:37:26.063: I/VibratorService(178): vibratorVolumeOn[mVolume : 4]
09-26 20:37:26.063: E/VibratorService(178): com_android_server_HardwareService.cpp : volume=4 / timeout_ms=80
09-26 20:37:26.063: I/VibratorService(178): vibratorVolumeOn[mTimeout : 80]
09-26 20:37:26.103: V/AudioPolicyManagerBase(86): stopOutput() output 1, stream 1
09-26 20:37:26.103: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 0
09-26 20:37:26.103: V/AudioPolicyManagerBase(86): getNewDevice() selected device 0
09-26 20:37:26.103: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 0 delayMs 200
09-26 20:37:26.103: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 0 or null device for output 1
09-26 20:37:26.103: W/InputManagerService(178): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@330d3418
09-26 20:37:27.993: V/AudioPolicyManagerBase(86): startOutput() output 1, stream 1
09-26 20:37:27.993: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 1
09-26 20:37:27.993: V/AudioPolicyManagerBase(86): getDeviceForStrategy() from cache strategy 0, device 2
09-26 20:37:27.993: V/AudioPolicyManagerBase(86): getNewDevice() selected device 2
09-26 20:37:27.993: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 2 delayMs 0
09-26 20:37:27.993: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 2 or null device for output 1
09-26 20:37:27.993: V/AudioPolicyManagerBase(86): releaseOutput() 1
09-26 20:37:28.023: I/VibratorService(178): vibratorVolumeOn[mVolume : 4]
09-26 20:37:28.023: E/VibratorService(178): com_android_server_HardwareService.cpp : volume=4 / timeout_ms=80
09-26 20:37:28.023: I/MiniApp(27509): http://book.daum-img.net/R110x160/BOK00018056722IN/나와 호랑이님. 6/카넬//영인/시드노벨/20120601/소설 ///20120909/취미/구입도서/20120909/20120915/20120915/0/0/0
09-26 20:37:28.023: I/VibratorService(178): vibratorVolumeOn[mTimeout : 80]
09-26 20:37:28.043: D/MiniApp(27509): 0
09-26 20:37:28.043: D/MiniApp(27509): 나와 호랑이님. 6
09-26 20:37:28.043: D/MiniApp(27509): http://book.daum-img.net/R110x160/BOK00018056722IN
09-26 20:37:28.043: D/MiniApp(27509): gogohttp://book.daum-img.net/R110x160/BOK00018056722IN
09-26 20:37:28.063: I/MiniApp(27509): http://book.daum-img.net/R110x160/BOK00018056722IN
09-26 20:37:28.063: V/AudioPolicyManagerBase(86): stopOutput() output 1, stream 1
09-26 20:37:28.063: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 0
09-26 20:37:28.063: V/AudioPolicyManagerBase(86): getNewDevice() selected device 0
09-26 20:37:28.063: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 0 delayMs 200
09-26 20:37:28.063: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 0 or null device for output 1
09-26 20:37:32.393: W/KeyCharacterMap(27509): Can't open keycharmap file
09-26 20:37:32.393: W/KeyCharacterMap(27509): Error loading keycharmap file '/system/usr/keychars/EF11_keypad.kcm.bin'. hw.keyboards.0.devname='EF11_keypad'
09-26 20:37:32.393: W/KeyCharacterMap(27509): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
09-26 20:37:34.813: D/WindowManager(178): interceptKeyTq event=android.view.RawInputEvent@33171040 keycode=4 screenIsOn=true keyguardActive=false
09-26 20:37:34.813: D/SkyComplexService(178): +playTouchVibeEffect=2131165292,0,2131165292,0
09-26 20:37:34.873: I/VibratorService(178): vibratorVolumeOn[mVolume : 4]
09-26 20:37:34.873: E/VibratorService(178): com_android_server_HardwareService.cpp : volume=4 / timeout_ms=80
09-26 20:37:34.873: D/SkyComplexService(178): -MESSAGE_VIBRATION_EFFECT=2131165292,0
09-26 20:37:34.873: I/VibratorService(178): vibratorVolumeOn[mTimeout : 80]
09-26 20:37:34.883: D/WindowManager(178): interceptKeyTq event=android.view.RawInputEvent@33171040 keycode=4 screenIsOn=true keyguardActive=false
09-26 20:37:37.443: V/AudioPolicyManagerBase(86): startOutput() output 1, stream 1
09-26 20:37:37.443: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 1
09-26 20:37:37.443: V/AudioPolicyManagerBase(86): getDeviceForStrategy() from cache strategy 0, device 2
09-26 20:37:37.443: V/AudioPolicyManagerBase(86): getNewDevice() selected device 2
09-26 20:37:37.443: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 2 delayMs 0
09-26 20:37:37.443: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 2 or null device for output 1
09-26 20:37:37.463: V/AudioPolicyManagerBase(86): releaseOutput() 1
09-26 20:37:37.503: I/VibratorService(178): vibratorVolumeOn[mVolume : 4]
09-26 20:37:37.503: E/VibratorService(178): com_android_server_HardwareService.cpp : volume=4 / timeout_ms=80
09-26 20:37:37.503: I/VibratorService(178): vibratorVolumeOn[mTimeout : 80]
09-26 20:37:37.503: I/MiniApp(27509): http://book.daum-img.net/R110x160/BOK00018056722IN/나와 호랑이님. 6/카넬//영인/시드노벨/20120601/소설 ///20120909/취미/구입도서/20120909/20120915/20120915/0/0/0
09-26 20:37:37.513: I/MiniApp(27509): http://book.daum-img.net/R110x160/KOR9788926781326/나와 호랑이님 5.5/카넬///시드노벨/20120501/소설 ///20120908/취미/구입도서/20120910/20120915/20120915/0/0/0
09-26 20:37:37.573: V/AudioPolicyManagerBase(86): stopOutput() output 1, stream 1
09-26 20:37:37.573: V/AudioPolicyManagerBase(86): changeRefCount() stream 1, count 0
09-26 20:37:37.573: V/AudioPolicyManagerBase(86): getNewDevice() selected device 0
09-26 20:37:37.573: V/AudioPolicyManagerBase(86): setOutputDevice() output 1 device 0 delayMs 200
09-26 20:37:37.573: V/AudioPolicyManagerBase(86): setOutputDevice() setting same device 0 or null device for output 1
09-26 20:37:43.433: I/LightsService(178): setLight_native.mId:2, color:0xff000000, mode:0, onMS:0, offMS:0, bMode:0
09-26 20:37:43.433: I/PowerManagerService(178): printWakeLockTag. mLocks.size:5
sql 문법에서 값 비교는 = 을 사용합니다.
부분 비교할 때는 like를 사용합니다.
여러 값중에 포함되어 있는지 확인 할 때는 in을 사용합니다.
자세한 문법 사용은 검색을 해보세요~