22
33
44import android .database .Cursor ;
5+ import android .graphics .Typeface ;
56import android .os .CancellationSignal ;
67import android .os .Handler ;
78import android .os .HandlerThread ;
1011import androidx .recyclerview .widget .RecyclerView ;
1112import android .text .Spannable ;
1213import android .text .SpannableString ;
14+ import android .text .SpannableStringBuilder ;
1315import android .text .style .StyleSpan ;
1416import android .view .LayoutInflater ;
1517import android .view .View ;
@@ -46,6 +48,7 @@ public enum SearchType {
4648 private boolean showBarcode = true ;
4749 private String lastQuery = "" ;
4850 private Project project ;
51+ private boolean showSku ;
4952
5053 public SearchableProductAdapter () {
5154 this .project = SnabbleUI .getProject ();
@@ -107,6 +110,8 @@ public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int
107110 selectedCode = scannableCodes [0 ];
108111 }
109112
113+ SpannableStringBuilder ssb = new SpannableStringBuilder ();
114+
110115 if (showBarcode ) {
111116 for (Product .Code code : product .getScannableCodes ()) {
112117 String lookupCode = code .lookupCode ;
@@ -116,11 +121,25 @@ public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int
116121 }
117122
118123 Spannable spannable = highlight (lastQuery , lookupCode );
119- holder . code . setText (spannable );
124+ ssb . append (spannable );
120125 selectedCode = code ;
121126 break ;
122127 }
123128 }
129+ }
130+
131+ if (showSku ) {
132+ if (ssb .length () > 0 ) {
133+ ssb .append (" (" );
134+ ssb .append (product .getSku ());
135+ ssb .append (")" );
136+ } else {
137+ ssb .append (product .getSku ());
138+ }
139+ }
140+
141+ if (ssb .length () > 0 ) {
142+ holder .code .setText (ssb );
124143 } else {
125144 holder .code .setVisibility (View .GONE );
126145 }
@@ -144,6 +163,10 @@ public void setSearchType(SearchType type) {
144163 searchType = type ;
145164 }
146165
166+ public void setShowSku (boolean showSku ) {
167+ this .showSku = showSku ;
168+ }
169+
147170 public void setOnProductSelectedListener (OnProductSelectedListener productSelectedListener ) {
148171 this .productSelectedListener = productSelectedListener ;
149172 }
@@ -215,7 +238,7 @@ private SpannableString highlight(final String query, final String text) {
215238 break ;
216239 }
217240 final StyleSpan styleSpan = new StyleSpan (android .graphics .Typeface .BOLD );
218- sb .setSpan (styleSpan , lastIndex , lastIndex + q .length (), Spannable .SPAN_INCLUSIVE_INCLUSIVE );
241+ sb .setSpan (styleSpan , lastIndex , lastIndex + q .length (), Spannable .SPAN_INCLUSIVE_EXCLUSIVE );
219242 lastIndex += q .length ();
220243 }
221244 }
0 commit comments