Skip to content

Commit ad806d0

Browse files
committed
Optimize the search function.
1 parent 0c53016 commit ad806d0

2 files changed

Lines changed: 12 additions & 8 deletions

File tree

app/src/main/java/com/sevtinge/hyperceiler/data/adapter/ModSearchAdapter.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import android.view.View;
2828
import android.view.ViewGroup;
2929
import android.widget.Filter;
30-
import android.widget.Filterable;
3130
import android.widget.ImageView;
3231
import android.widget.TextView;
3332

@@ -44,7 +43,7 @@
4443
import java.util.Locale;
4544
import java.util.concurrent.CopyOnWriteArrayList;
4645

47-
public class ModSearchAdapter extends RecyclerView.Adapter<ModSearchAdapter.ViewHolder> implements Filterable {
46+
public class ModSearchAdapter extends RecyclerView.Adapter<ModSearchAdapter.ViewHolder> {
4847

4948
private Context mContext;
5049
private String filterString = "";
@@ -62,7 +61,6 @@ public void setOnItemClickListener(onItemClickListener onItemClick) {
6261
@Override
6362
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
6463
mContext = viewGroup.getContext();
65-
isChina = isChina(mContext);
6664
View view = LayoutInflater.from(mContext).inflate(R.layout.item_search_result, viewGroup, false);
6765
// 创建一个VIewHolder
6866
return new ViewHolder(view);
@@ -106,11 +104,10 @@ public int getItemCount() {
106104
return modsList.size();
107105
}
108106

109-
@Override
110-
public Filter getFilter() {
107+
public Filter getFilter(Context context) {
111108
// 如果ItemFilter对象为空,那么重写创建一个
112109
if (mFilter == null) {
113-
mFilter = new ItemFilter();
110+
mFilter = new ItemFilter(context);
114111
}
115112
return mFilter;
116113
}
@@ -136,13 +133,20 @@ public interface onItemClickListener {
136133

137134

138135
private class ItemFilter extends Filter {
136+
private final Context context;
137+
138+
ItemFilter(Context context) {
139+
this.context = context;
140+
}
141+
139142
private final HashMap<String, Integer> modMap = new HashMap<>();
140143

141144
@Override
142145
protected FilterResults performFiltering(CharSequence constraint) {
143146
filterString = constraint.toString().toLowerCase();
144-
ArrayList<ModData> nlist = new ArrayList<ModData>();
147+
ArrayList<ModData> nlist = new ArrayList<>();
145148
modMap.clear();
149+
isChina = isChina(context);
146150
if (isChina) {
147151
for (int i = 0; i < filterString.length(); i++) {
148152
char ch = filterString.charAt(i);

app/src/main/java/com/sevtinge/hyperceiler/ui/base/NavigationActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ void findMod(String filter) {
241241
mSearchResultView.setVisibility(filter.isEmpty() ? View.GONE : View.VISIBLE);
242242
ModSearchAdapter adapter = (ModSearchAdapter) mSearchResultView.getAdapter();
243243
if (adapter == null) return;
244-
adapter.getFilter().filter(filter);
244+
adapter.getFilter(NavigationActivity.this).filter(filter);
245245
}
246246

247247
@Override

0 commit comments

Comments
 (0)