개선 요청 사항 : 검색창의 결과를 좀 더 직관적으로 보고싶다. 매칭되는 검색어에 해당하는 텍스트의 색상을 바꿔달라.
<기존>
보시다시피 recycleview의 item holder에서는 그냥 item의 정보를 가져와 setText로 입력해주는 방식이었습니다.
@Override
public void onBindViewHolder(@NonNull RoutelayoutFragment_find_location_Adapter.MyViewHolder holder, int position) {
try{
if(mDataset.get(position)!=null) {
fragment_home_second_pathlist_Item item = mDataset.get(position);
holder.place_name.setText(item.getPlace_name());
holder.category_name.setText(item.getCategory_name());
holder.address_name.setText(item.getRoad_address_name());
Log.d("testtesttest", item.getPlace_name() + " " + item.getX() + " " + item.getY());
}
}catch (IndexOutOfBoundsException e){
e.printStackTrace();
}
}
<개선>
개선결과, SpannableString을 이용하여 content(기존 text)를 가져오기 word라는 타켓텍스트를 설정하여 setSpan으로 색상을 바꾸게 되었습니다.
추가적으로 setSpan에는 색상변경 뿐만 아니라 글자 크기, 위치등 다양한 변경이 가능하니 확인해보시기 바랍니다.
@Override
public void onBindViewHolder(@NonNull RoutelayoutFragment_find_location_Adapter.MyViewHolder holder, int position) {
try{
if(mDataset.get(position)!=null) {
fragment_home_second_pathlist_Item item = mDataset.get(position);
// 기존 item의 string을 가져옴
String content = item.getPlace_name().toString();
SpannableString spannableString = new SpannableString(content);
// 타켓이 되는 word를 설정(색을 바꾸려는 text)
String word = find_location_edittext_text;
int start = content.indexOf(word);
int end = start + word.length();
// 타켓 word의 색상 변경
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#438bff")), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//삽입
holder.place_name.setText(spannableString);
holder.category_name.setText(item.getCategory_name());
holder.address_name.setText(item.getRoad_address_name());
Log.d("testtesttest", item.getPlace_name() + " " + item.getX() + " " + item.getY());
}
}catch (IndexOutOfBoundsException e){
e.printStackTrace();
}
}
<끝>
'개발 > 안드로이드' 카테고리의 다른 글
[안드로이드] 구글맵 클러스터링 커스텀 마커 표출 | 버그리포트 (0) | 2020.01.24 |
---|---|
[안드로이드] 구글맵 + 마커 클러스터링 + 커스텀 마커 + 마커 클릭 이벤트 구현 (2) | 2020.01.15 |
[안드로이드] 현재 위치(좌표) 구하기 | 버그리포트 (0) | 2019.10.10 |
[안드로이드] 공공데이터 api 파싱 예시 및 그래프 표현 (0) | 2019.08.15 |
[안드로이드] Glide를 이용하여 gif 파일을 dialog에서 실행하기 (0) | 2019.08.05 |
댓글