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.

  • AlertDialog mit Checkbox In android
  • Deaktivieren Sie Vibrationen für eine Benachrichtigung
  • Wie benutzt man NodeJS in Android mit J2V8
  • Android Studio APK Analyzer für Debug-Builds
  • SetStorageEncryption erzeugt keine Wirkung
  • Wie kann ich System-Icons in meiner Android-App verwenden?
  • 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.

  • MediaController mit MediaPlayer
  • Wie kann ich meine ADT in Eclipse aktualisieren?
  • Übergeben von Daten eines nicht-primitiven Typs zwischen Aktivitäten in Android
  • ConnectedAndroidTest und Release Build-Typ
  • Warum kann ich nicht einen AVD von Eclipse mit 1024 MB RAM starten?
  • Hören Sie auf den Fingerabdruck zu, wenn der Bildschirm ausgeschaltet ist
  • 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.