Android 검색 결과는 키워드와 일치하며 강조 표시됩니다.
4225 단어 안드로이드 사용법
단일 키워드일 경우 먼저 그의 아래 첨자, 길이를 계산한 다음 아래 첨자에서 아래 첨자+길이까지 특수 색상으로 표시하면 됩니다. 코드는 다음과 같습니다.
if (name != null && name.contains(keyWord)) {
int index = name.indexOf(keyWord);
int len = keyWord.length();
Spanned temp = Html.fromHtml(name.substring(0, index)
+ ""
+ name.substring(index, index + len) + ""
+ name.substring(index + len, name.length()));
}
temp는 바뀐 글자입니다. 키워드는 빨간색을 넣었습니다.2. 다중 키워드가 일치할 때 우리가 검색을 할 때 사용자가 입력한 키워드를 서버에서 분리하고 여러 개의 키워드로 나누어 검색해야 한다.그러면 서버에서 데이터를 되돌릴 때 키워드는 여러 개로 나누어집니다.즉, 되돌아오는 것은 하나의 키워드 그룹이다.
이런 경우 클라이언트가 키워드를 일치시킬 때 단락의 여러 키워드를 모두 일치시키고 표시하는 알고리즘을 써야 한다.
코드는 다음과 같습니다.
adapter의 논리:
/**
name item item
keyList list
*/
StringBuffer str = new StringBuffer("");
str = Utils.addChild(name, keyList, str);
holder.contentTv.setText(Html.fromHtml(str.toString()));
다음은 일치:
/**
* , HTML
* @param str
* @param inputs
* @param resStr
*/
public static StringBuffer addChild(String str,List inputs,StringBuffer resStr){
int index=str.length();// ,
String next="";// str
for (int i = inputs.size() -1 ; i>= 0;i--) {
String theNext=inputs.get(i);
int theIndex=str.indexOf(theNext);
if(theIndex==-1){//
inputs.remove(i);
}else if(theIndex<index){
index=theIndex;//
next=theNext;
}
}
// , ,
if(index==str.length()){
resStr.append(str);
}else{
resStr.append(str.substring(0,index));
resStr.append(""+str.substring(index,index+next.length())+"");
String str1=str.substring(index+next.length(),str.length());
addChild(str1,inputs,resStr);//
}
return resStr;
}