sqlite 에서 Like 검색 예제입니다.

실행 화면은 아래와 같습니다.


 


코드 작성

UI 처리 부분

public void setChangeListData(String searchKeyword) {
	if(searchKeyword != null) {
		if (searchKeyword.length() != 0) {
			List<ItemMemo> temp = setLikeSearch(searchKeyword);
			if(temp != null) {
				setSearchData(temp);
				return;
			}
		}
	}
	setLoadListData(oriList);
}

private void setSearchData(List<ItemMemo> list) {
	lay_noData.setVisibility(View.GONE);
	tv_noSearch.setVisibility(View.GONE);
	if(list.size() == 0) {
		rv.setVisibility(View.INVISIBLE);
		tv_noSearch.setVisibility(View.VISIBLE);
	} else {
		rv.setVisibility(View.VISIBLE);
		mAdapter.swap(list);
	}
}


SQLite 쿼리 날리는 부분

/**
 * Like 검색
 */
public List<ItemMemo> setLikeSearch(String keyword) {
	List<ItemMemo> list = new ArrayList<>();
	try {
		beginTransaction();
		Cursor c = select(TABLE_NAME, /**COLUMNS_NAME*/"contents", keyword);
		if (c != null) {
			Log.i("test","c : " + c + " , " + c.getCount());
			int total = c.getCount();
			if (total > 0) {
				c.moveToFirst();
				while (!c.isAfterLast()) {
					
					/* 중략 */

					list.add(new ItemMemo());
					c.moveToNext();
				}
			}
			c.close();
		}
	} catch (SQLiteException e) {
		Log.e("test", e.toString());
	} finally {
		endTransaction();
	}
	return list;
}

public Cursor select(String tableName, String name, String Like) throws SQLiteException{
	return getReadableDatabase().query(
			tableName, 
			null,
			name+ " LIKE ?",
			new String[] {"%"+ Like+ "%" },
			null,
			null,
			null,
			null);
}


+ Recent posts