diff --git a/app/src/main/java/cu/axel/smartdock/adapters/AppAdapter.java b/app/src/main/java/cu/axel/smartdock/adapters/AppAdapter.java index 9f853fe7..c9833158 100644 --- a/app/src/main/java/cu/axel/smartdock/adapters/AppAdapter.java +++ b/app/src/main/java/cu/axel/smartdock/adapters/AppAdapter.java @@ -2,6 +2,9 @@ import android.content.Context; import android.preference.PreferenceManager; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.style.StyleSpan; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -11,6 +14,7 @@ import android.widget.Filter; import android.widget.ImageView; import android.widget.TextView; +import android.graphics.Typeface; import cu.axel.smartdock.R; import cu.axel.smartdock.icons.IconParserUtilities; import cu.axel.smartdock.models.App; @@ -28,6 +32,7 @@ public class AppAdapter extends ArrayAdapter { private boolean iconTheming, tabletMode; private IconParserUtilities iconParserUtilities; private AppRightClickListener rightClickListener; + private String query; public AppAdapter(Context context, AppRightClickListener listener, ArrayList apps) { super(context, R.layout.app_entry, apps); @@ -68,8 +73,21 @@ public View getView(int position, View convertView, ViewGroup parent) { holder = (ViewHolder) convertView.getTag(); final App app = apps.get(position); - holder.nameTv.setText(app.getName()); - + String name = app.getName(); + + if (query != null) { + int spanStart = name.toLowerCase().indexOf(query.toLowerCase()); + int spanEnd = spanStart + query.length(); + if (spanStart != -1) { + SpannableString spannable = new SpannableString(name); + spannable.setSpan(new StyleSpan(Typeface.BOLD), spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + holder.nameTv.setText(spannable); + } else { + holder.nameTv.setText(name); + } + } else { + holder.nameTv.setText(name); + } if (iconTheming) holder.iconIv.setImageDrawable(iconParserUtilities.getPackageThemedIcon(app.getPackageName())); @@ -114,6 +132,7 @@ private class AppFilter extends Filter { protected Filter.FilterResults performFiltering(CharSequence p1) { FilterResults results = new FilterResults(); String query = p1.toString().trim().toLowerCase(); + AppAdapter.this.query = query; if (query.length() > 1) { ArrayList filteredResults = new ArrayList();