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; @@ -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 { @@ -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<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 { @@ -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 { @@ -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

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; @@ -26,20 +26,22 @@ import cc.niushuai.dididone.biz.entity.SavedIcon;
public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter.IconRecycleViewHolder> {
public static final Map<String, List<SavedIcon>> ICON_MAP = new HashMap<>();
private Class<? extends IIcon> iconClass;
private List<SavedIcon> savedIconList;
private Context context;
public IconRecycleAdapter(Context context, Class<? extends IIcon> iconClass) {
this.context = context;
this.iconClass = iconClass;
change(getIconClassName(iconClass), item -> true);
}
public void change(String name, Predicate<? super SavedIcon> 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();
}

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

@ -23,6 +23,9 @@ @@ -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" />
<androidx.recyclerview.widget.RecyclerView

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

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
<string name="s_set_app">App</string>
<string name="s_set_icon">图标</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>
</resources>
Loading…
Cancel
Save