Browse Source

feat: 🆔 icon complete

master
niushuai233 1 year ago
parent
commit
e86bd0524b
  1. 12
      app/src/main/java/cc/niushuai/dididone/ui/setting/icon/IconFragment.java
  2. 8
      app/src/main/java/cc/niushuai/dididone/ui/setting/icon/recycle/IconRecycleAdapter.java
  3. 3
      app/src/main/res/layout/fragment_icon.xml
  4. 2
      app/src/main/res/values/strings.xml

12
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.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.function.Predicate;
import cc.niushuai.dididone.R; import cc.niushuai.dididone.R;
import cc.niushuai.dididone.biz.entity.SavedIcon; import cc.niushuai.dididone.biz.entity.SavedIcon;
@ -79,7 +80,12 @@ public class IconFragment extends Fragment implements InitAndSetListener {
@Override @Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String key = keys.get(position); String key = keys.get(position);
iconRecycleAdapter.change(key, item -> true); String str = binding.iconsSearch.getText().toString();
Predicate<SavedIcon> 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 @Override
public void setListeners() { public void setListeners() {
setSelectListener();
} }
private void setSelectListener() { private void setSelectListener() {
@ -121,12 +129,10 @@ public class IconFragment extends Fragment implements InitAndSetListener {
binding.iconsSearch.addTextChangedListener(new TextWatcher() { binding.iconsSearch.addTextChangedListener(new TextWatcher() {
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
iconRecycleAdapter.change(null, item -> item.getIcon().contains(s.toString()));
} }
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
iconRecycleAdapter.change(null, item -> item.getIcon().contains(s.toString()));
} }
@Override @Override

8
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<IconRecycleAdapter.IconRecycleViewHolder> { public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter.IconRecycleViewHolder> {
public static final Map<String, List<SavedIcon>> ICON_MAP = new HashMap<>(); public static final Map<String, List<SavedIcon>> ICON_MAP = new HashMap<>();
private Class<? extends IIcon> iconClass;
private List<SavedIcon> savedIconList; private List<SavedIcon> savedIconList;
private Context context; private Context context;
public IconRecycleAdapter(Context context, Class<? extends IIcon> iconClass) { public IconRecycleAdapter(Context context, Class<? extends IIcon> iconClass) {
this.context = context; this.context = context;
this.iconClass = iconClass;
change(getIconClassName(iconClass), item -> true); change(getIconClassName(iconClass), item -> true);
} }
public void change(String name, Predicate<? super SavedIcon> filter) { public void change(String name, Predicate<? super SavedIcon> filter) {
if (null != name) { if (null == name) {
this.savedIconList = ICON_MAP.get(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(); this.notifyDataSetChanged();
} }

3
app/src/main/res/layout/fragment_icon.xml

@ -23,6 +23,9 @@
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:scrollHorizontally="true" android:scrollHorizontally="true"
android:lines="1"
android:inputType="text"
android:imeOptions="actionDone"
android:background="@drawable/bg_miui10" /> android:background="@drawable/bg_miui10" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

2
app/src/main/res/values/strings.xml

@ -20,7 +20,7 @@
<string name="s_set_app">App</string> <string name="s_set_app">App</string>
<string name="s_set_icon">图标</string> <string name="s_set_icon">图标</string>
<string name="s_set_project">打卡项</string> <string name="s_set_project">打卡项</string>
<string name="n_menu_name_icon">Icon</string> <string name="n_menu_name_icon">ICON</string>
<string name="icon_name_FontAwesome">FontAwesome</string> <string name="icon_name_FontAwesome">FontAwesome</string>
</resources> </resources>
Loading…
Cancel
Save