diff --git a/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/IconFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/IconFragment.java index 084e35e..b968625 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/IconFragment.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/IconFragment.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Predicate; import cc.niushuai.dididone.R; import cc.niushuai.dididone.biz.entity.SavedIcon; @@ -79,7 +80,12 @@ public class IconFragment extends Fragment implements InitAndSetListener { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { String key = keys.get(position); - iconRecycleAdapter.change(key, item -> true); + String str = binding.iconsSearch.getText().toString(); + Predicate filter = item -> true; + if (null != str && str.length() > 0) { + filter = item -> item.getIcon().contains(str); + } + iconRecycleAdapter.change(key, filter); } /** @@ -111,6 +117,8 @@ public class IconFragment extends Fragment implements InitAndSetListener { */ @Override public void setListeners() { + + setSelectListener(); } private void setSelectListener() { @@ -121,12 +129,10 @@ public class IconFragment extends Fragment implements InitAndSetListener { binding.iconsSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { - iconRecycleAdapter.change(null, item -> item.getIcon().contains(s.toString())); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - iconRecycleAdapter.change(null, item -> item.getIcon().contains(s.toString())); } @Override diff --git a/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/recycle/IconRecycleAdapter.java b/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/recycle/IconRecycleAdapter.java index 76c64ba..2ec7206 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/recycle/IconRecycleAdapter.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/setting/icon/recycle/IconRecycleAdapter.java @@ -26,20 +26,22 @@ import cc.niushuai.dididone.biz.entity.SavedIcon; public class IconRecycleAdapter extends RecyclerView.Adapter { public static final Map> ICON_MAP = new HashMap<>(); + private Class iconClass; private List savedIconList; private Context context; public IconRecycleAdapter(Context context, Class iconClass) { this.context = context; + this.iconClass = iconClass; change(getIconClassName(iconClass), item -> true); } public void change(String name, Predicate filter) { - if (null != name) { - this.savedIconList = ICON_MAP.get(name); + if (null == name) { + name = getIconClassName(iconClass); } - this.savedIconList = this.savedIconList.stream().filter(filter).collect(Collectors.toList()); + this.savedIconList = ICON_MAP.get(name).stream().filter(filter).collect(Collectors.toList()); this.notifyDataSetChanged(); } diff --git a/app/src/main/res/layout/fragment_icon.xml b/app/src/main/res/layout/fragment_icon.xml index 0da9de8..f93d002 100644 --- a/app/src/main/res/layout/fragment_icon.xml +++ b/app/src/main/res/layout/fragment_icon.xml @@ -23,6 +23,9 @@ android:layout_marginTop="15dp" android:layout_marginRight="15dp" android:scrollHorizontally="true" + android:lines="1" + android:inputType="text" + android:imeOptions="actionDone" android:background="@drawable/bg_miui10" /> App 图标 打卡项 - Icon + ICON FontAwesome \ No newline at end of file