먼저 데이터 베이스의 정보를 검색하는 함수를 만들기 위해 DatabaseHandler에서 작업한다.
// 메모 검색하는 함수
public ArrayList<Memo> searchMemo (String keyword){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from memo where title like '%"+keyword+"%' or content like '%"+keyword+"%'",null);
ArrayList<Memo> memoList = new ArrayList<Memo>();
if(cursor.moveToFirst()){
do{
Memo memo = new Memo(cursor.getInt(0),cursor.getString(1), cursor.getString(2));
memoList.add(memo);
} while(cursor.moveToNext());
}
return memoList;
}
그 후 메인에서 서치 바 (검색창)에 addTextChangedListener에 TextWatcher를 적용시켜서 오버라이드 한다.
editSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
검색창에 2개 이상의 단어를 입력했을때 바로 검색하여 해당 카드뷰를 보여주도록 하자.
editSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
// 키워드를 쓸때마다 자동으로 해당 검색어를 가져와서 디비에서 쿼리해서 검색결과 화면에 표시
String keyword = editSearch.getText().toString().trim();
if (keyword.length()>=2){
DatabaseHandler db = new DatabaseHandler(MainActivity.this);
memoList = db.searchMemo(keyword);
adapter = new MemoAdapter(MainActivity.this, memoList);
recyclerView.setAdapter(adapter);
db.close();
}
}
});
# 글자가 모두 써진 후 실행되도록 afterTextChanged에서 작업했다.
잘 실행되는것을 확인할수있다.
글자를 지울때 마다 네트워크에서 데이터를 가져올때는 onTextChanged에서 코드를 작성한다.
editSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if( charSequence.length() == 0 ){
keyword = "";
getNetworkData();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
'Android' 카테고리의 다른 글
[Android] 네트워크에서 데이터 가져오기 및 수정 (작성중) (0) | 2022.07.19 |
---|---|
[Android] 엑션바 활용과 메뉴 만들기: getSupportActionBar, onSupportNavigateUp, onCreateOptionsMenu, onOptionsItemSelected (0) | 2022.07.19 |
[Android] 리사이클러 뷰 (RecyclerView) + Vector Asset, 클래스 Intent: Serializable (0) | 2022.07.14 |
[Android] SQLite3 데이터 활용: CRUD 작업, SQLiteDatabase, do, while (0) | 2022.07.14 |
[Android] 데이터 저장: SharedPreference (0) | 2022.07.13 |
댓글