Markieren Sie gesuchter Text in ListView-Elementen

Bildbeschreibung hier eingeben

Ich habe eine ListView und ich benutze einen benutzerdefinierten Adapter, um Daten ListView . Jetzt möchte ich die gesuchte Textbrieffarbe ändern, wie im obigen Screenshot.

Hier ist der Code für SearchView

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.actionbar_menu_item, menu); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); final SearchView searchView = (SearchView) menu.findItem(R.id.action_search) .getActionView(); searchView.setSearchableInfo(searchManager .getSearchableInfo(getComponentName())); searchView.setOnQueryTextListener(this); return super.onCreateOptionsMenu(menu); } public boolean onQueryTextChange(String newText) { // this is adapter that will be filtered if (TextUtils.isEmpty(newText)){ lvCustomList.clearTextFilter(); } else{ lvCustomList.setFilterText(newText.toString()); } return false; } @Override public boolean onQueryTextSubmit(String query) { return false; } 

Vielen Dank.

  • Können Sie Google Play mit Intent suchen?
  • Android: Bereitstellung Auto Autosuggestion in android Orte Api?
  • Android-Such-Widget - Unterschied zwischen onQueryTextSubmit und Senden von Intent zu SearchableActivity?
  • Wie implementiere ich Fuzzy-Suche mit SQLite's FTS3?
  • Wie bekomme ich android searchview Popup-Text bei der Suche?
  • android suchen: anpassen Vorschlag Layout
  • Suchen einer SQLite-Datenbank, die kyrillische Daten enthält
  • One Solution collect form web for “Markieren Sie gesuchter Text in ListView-Elementen”

    Ich getCount() davon aus, dass Sie einen benutzerdefinierten Adapter mit getCount() und getView() implementiert haben und bereits Elemente filtern und Sie brauchen nur den fetten Teil.

    Um dies zu erreichen, müssen Sie einen SpannableString , der im Grunde Text mit Markup verbunden ist. Zum Beispiel kann ein TextAppearanceSpan verwendet werden, um Schriftart, Schriftart, Größe und Farbe zu ändern.

    So solltest du den getView() des Adapters getView() , um den Teil zu ändern, in dem du textView.setText() in etwas mehr oder weniger wie textView.setText() :

     String filter = ...; String itemValue = ...; int startPos = itemValue.toLowerCase(Locale.US).indexOf(filter.toLowerCase(Locale.US)); int endPos = startPos + filter.length(); if (startPos != -1) // This should always be true, just a sanity check { Spannable spannable = new SpannableString(itemValue); ColorStateList blueColor = new ColorStateList(new int[][] { new int[] {}}, new int[] { Color.BLUE }); TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, blueColor, null); spannable.setSpan(highlightSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannable); } else textView.setText(itemValue); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.