diff --git a/app/src/main/assets/hisnul.sqlite3 b/app/src/main/assets/hisnul.sqlite3 index 16949f4..5060b9b 100644 Binary files a/app/src/main/assets/hisnul.sqlite3 and b/app/src/main/assets/hisnul.sqlite3 differ diff --git a/app/src/main/java/adapters/DuaGroupAdapter.java b/app/src/main/java/adapters/DuaGroupAdapter.java index 09574d7..ada5f16 100644 --- a/app/src/main/java/adapters/DuaGroupAdapter.java +++ b/app/src/main/java/adapters/DuaGroupAdapter.java @@ -1,8 +1,13 @@ package adapters; import android.content.Context; +import android.content.res.ColorStateList; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.graphics.Typeface; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.style.TextAppearanceSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -15,6 +20,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; import classes.Dua; import database.ExternalDbOpenHelper; @@ -24,6 +30,7 @@ public class DuaGroupAdapter extends BaseAdapter implements Filterable { private Context mContext; private LayoutInflater mInflater; private List mList; + private CharSequence search_txt = ""; public DuaGroupAdapter(Context context, List list) { mContext = context; @@ -42,6 +49,7 @@ public Filter getFilter() { return new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { + search_txt = constraint; final ExternalDbOpenHelper helper = ExternalDbOpenHelper.getInstance(mContext); final SQLiteDatabase db = helper.openDataBase(); @@ -50,7 +58,7 @@ protected FilterResults performFiltering(CharSequence constraint) { try { c = db.query(HisnDatabaseInfo.DuaGroupTable.TABLE_NAME, null, HisnDatabaseInfo.DuaGroupTable.ENGLISH_TITLE + " like ?", - new String[] { "%" + constraint + "%" }, null, null, null); + new String[]{"%" + constraint + "%"}, null, null, null); if (c != null && c.moveToFirst()) { do { final Dua dua = new Dua(c.getInt(0), c.getString(2)); @@ -106,13 +114,31 @@ public View getView(int position, View convertView, ViewGroup parent) { holder.tvReference = (TextView) convertView.findViewById(R.id.txtReference); holder.tvDuaName = (TextView) convertView.findViewById(R.id.txtDuaName); convertView.setTag(holder); - } - holder = (ViewHolder) convertView.getTag(); + } else + holder = (ViewHolder) convertView.getTag(); Dua p = getItem(position); if (p != null) { holder.tvReference.setText("" + p.getReference()); holder.tvDuaName.setText(p.getTitle()); + + String filter = search_txt.toString(); + String itemValue = holder.tvDuaName.getText().toString(); + + 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 highlightColor = + new ColorStateList(new int[][]{new int[]{}}, new int[]{mContext.getResources().getColor(R.color.colorAccent)}); + TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, highlightColor, null); + + spannable.setSpan(highlightSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + holder.tvDuaName.setText(spannable); + } else + holder.tvDuaName.setText(itemValue); } return convertView; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b3192e6..c554828 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,8 +24,8 @@ <big><b>Contributors</b></big><br/> Ahmed El-Helw (<a href="http://twitter.com/ahmedre">@ahmedre</a>)<br/> Azhar Ali (<a href="https://www.linkedin.com/pub/md-azhar-ali/90/251/140">LinkedIn</a>)<br/> - Abdul Majed Ahmed (<a href="https://www.facebook.com/abdulmajed.ahmed">Facebook</a>)<br/> - Hussaini Zulkifli (<a href="https://twitter.com/HussainiZul">@HussainiZulk</a>)<br/> + Abdul Majed Ahmed (<a href="https://twitter.com/AbdulMajed19">@AbdulMajed19</a>)<br/> + Hussaini Zulkifli (<a href="https://twitter.com/HussainiZul">@HussainiZul</a>)<br/> Mohammad Khalid Hussain (<a href="https://www.github.com/khalid.hussain">GitHub</a>) <br/><br/>