首先添加两个函数getData并将Data Search设置为baseadapter
public class bsAdapter extends BaseAdapter {
Activity cntx;
public bsAdapter(Activity context) {
// TODO Auto-generated constructor stub
this.cntx = context;
}
public int getCount() {
// TODO Auto-generated method stub
return AllSongs.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return AllSongs.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return AllSongs.size();
}
public void setDataSearch(String data) {
this.search = data;
}
public String getData() {
return this.search;
}
首先在Search_class中声明searchData
public String searchData;
private bsAdapter mAdapter;
并声明
mAdapter = new bsAdapter(this);
然后你在文本观察器中添加条件
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = et.getText().length();
AllSongs.clear();
for (int i = 0; i < AllSongsArray.length; i++) {
if (textlength <= AllSongsArray[i].length()) {
if (AllSongsArray[i].toLowerCase().contains(
et.getText().toString().toLowerCase().trim())) {
AllSongs.add(AllSongsArray[i]);
}
}
if (textlength == 0) {
mAdapter.setDataSearch(null);
} else {
searchData = s.toString().toLowerCase();
mAdapter.setDataSearch(SearchData);
}
}
AppendList(AllSongs);
}
然后把这个函数放到baseadapter中
public static CharSequence highlight(String search, String originalText) {
String normalizedText = Normalizer.normalize(originalText, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "").toLowerCase();
int start = normalizedText.indexOf(search);
Spannable highlighted = new SpannableString(originalText);
if (start < 0) {
// not found, nothing to to
return originalText;
} else {
while (start >= 0) {
int spanStart = Math.min(start, originalText.length());
int spanEnd = Math.min(start + search.length(), originalText.length());
highlighted.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
highlighted.setSpan(new ForegroundColorSpan(cntx.getResources().getColor(R.color.text_color_white)), spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
start = normalizedText.indexOf(search, spanEnd);
}
return highlighted;
}
}
并把这个
public View getView(final int position, View convertView,
ViewGroup parent) {
View row = null;
LayoutInflater inflater = cntx.getLayoutInflater();
row = inflater.inflate(R.layout.listview_item, null);
TextView tv = (TextView) row.findViewById(R.id.tv_artist_name);
if(search != null){
tv.setText(highlight(search,AllSongs.get(position));
}
else if (search == null){
tv.setText(AllSongs.get(position));
}
return row;