Browse Source

feat: 🐌 取消下拉框

master
niushuai233 1 year ago
parent
commit
f982120d63
  1. 74
      app/src/main/java/cc/niushuai/dididone/ui/setting/icon/IconFragment.java
  2. 24
      app/src/main/java/cc/niushuai/dididone/ui/setting/icon/recycle/IconRecycleAdapter.java
  3. 53
      app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java
  4. 4
      app/src/main/res/layout/fragment_icon.xml
  5. 4
      app/src/main/res/layout/fragment_icon_dialog.xml

74
app/src/main/java/cc/niushuai/dididone/ui/setting/icon/IconFragment.java

@ -51,44 +51,44 @@ public class IconFragment extends BaseFragment {
@Override @Override
public void init() { public void init() {
initSpinner(); // initSpinner();
initRecyclerView(); initRecyclerView();
} }
private void initSpinner() { // private void initSpinner() {
Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet(); // Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet();
ArrayList<String> keys = new ArrayList<>(keySet); // ArrayList<String> keys = new ArrayList<>(keySet);
Collections.sort(keys); // Collections.sort(keys);
binding.iconsSelect.setAdapter(new ArrayAdapter<String>(getContext(), com.necer.R.layout.support_simple_spinner_dropdown_item, keys)); // binding.iconsSelect.setAdapter(new ArrayAdapter<String>(getContext(), com.necer.R.layout.support_simple_spinner_dropdown_item, keys));
binding.iconsSelect.setSelection(0); // binding.iconsSelect.setSelection(0);
//
binding.iconsSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // binding.iconsSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
/** // /**
* @param parent The AdapterView where the selection happened // * @param parent The AdapterView where the selection happened
* @param view The view within the AdapterView that was clicked // * @param view The view within the AdapterView that was clicked
* @param position The position of the view in the adapter // * @param position The position of the view in the adapter
* @param id The row id of the item that is selected // * @param id The row id of the item that is selected
*/ // */
@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);
String str = binding.iconsSearch.getText().toString(); // String str = binding.iconsSearch.getText().toString();
Predicate<SavedIcon> filter = item -> true; // Predicate<SavedIcon> filter = item -> true;
if (null != str && str.length() > 0) { // if (null != str && str.length() > 0) {
filter = item -> item.getIcon().contains(str); // filter = item -> item.getIcon().contains(str);
} // }
iconRecycleAdapter.change(key, filter); // iconRecycleAdapter.change(key, filter);
} // }
//
/** // /**
* @param parent The AdapterView that now contains no selected item. // * @param parent The AdapterView that now contains no selected item.
*/ // */
@Override // @Override
public void onNothingSelected(AdapterView<?> parent) { // public void onNothingSelected(AdapterView<?> parent) {
//
} // }
}); // });
} // }
private void initRecyclerView() { private void initRecyclerView() {
binding.iconsRecyclerView.addItemDecoration(new DividerItemDecoration(this.getActivity(), DividerItemDecoration.VERTICAL)); binding.iconsRecyclerView.addItemDecoration(new DividerItemDecoration(this.getActivity(), DividerItemDecoration.VERTICAL));
@ -100,7 +100,7 @@ public class IconFragment extends BaseFragment {
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
binding.iconsRecyclerView.setLayoutManager(layoutManager); binding.iconsRecyclerView.setLayoutManager(layoutManager);
iconRecycleAdapter = new IconRecycleAdapter(getActivity(), CommunityMaterial.Icon.class); iconRecycleAdapter = new IconRecycleAdapter(getActivity());
binding.iconsRecyclerView.setAdapter(iconRecycleAdapter); binding.iconsRecyclerView.setAdapter(iconRecycleAdapter);
} }
@ -129,7 +129,7 @@ public class IconFragment extends BaseFragment {
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
iconRecycleAdapter.change(null, item -> item.getIcon().contains(s.toString())); iconRecycleAdapter.change(item -> item.getIcon().contains(s.toString()));
} }
}); });
} }

24
app/src/main/java/cc/niushuai/dididone/ui/setting/icon/recycle/IconRecycleAdapter.java

@ -14,6 +14,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.typeface.IIcon; import com.mikepenz.iconics.typeface.IIcon;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -30,15 +32,15 @@ public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter.
public static final Map<String, List<SavedIcon>> ICON_MAP = new HashMap<>(); public static final Map<String, List<SavedIcon>> ICON_MAP = new HashMap<>();
int selectedPosition = -1; int selectedPosition = -1;
int lastSelectedPosition = -1; int lastSelectedPosition = -1;
private Class<? extends IIcon> iconClass; private List<SavedIcon> allIconList;
private List<SavedIcon> savedIconList; private List<SavedIcon> savedIconList;
private Activity activity; private Activity activity;
private String selectedIcon; private String selectedIcon;
public IconRecycleAdapter(Activity activity, Class<? extends IIcon> iconClass) { public IconRecycleAdapter(Activity activity) {
this.activity = activity; this.activity = activity;
this.iconClass = iconClass; this.allIconList = getIconValues();
change(getIconClassName(iconClass), item -> true); change(item -> true);
} }
public static String getIconClassName(Class<? extends IIcon> iconClass) { public static String getIconClassName(Class<? extends IIcon> iconClass) {
@ -51,14 +53,18 @@ public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter.
return selectedIcon; return selectedIcon;
} }
public void change(String name, Predicate<? super SavedIcon> filter) { public void change(Predicate<? super SavedIcon> filter) {
if (null == name) { this.savedIconList = allIconList.stream().filter(filter).collect(Collectors.toList());
name = getIconClassName(iconClass);
}
this.savedIconList = ICON_MAP.get(name).stream().filter(filter).collect(Collectors.toList());
this.notifyDataSetChanged(); this.notifyDataSetChanged();
} }
@NonNull
private static List<SavedIcon> getIconValues() {
List<SavedIcon> list = new ArrayList<>();
ICON_MAP.values().forEach(item -> list.addAll(item));
return list;
}
/** /**
* @param parent The ViewGroup into which the new View will be added after it is bound to * @param parent The ViewGroup into which the new View will be added after it is bound to
* an adapter position. * an adapter position.

53
app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java

@ -74,7 +74,7 @@ public class NewProjectActivity extends BaseActivity {
initIconDialogRecyclerView(iconDialogView); initIconDialogRecyclerView(iconDialogView);
initIconDialogSpinner(iconDialogView); // initIconDialogSpinner(iconDialogView);
addIconDialogSearchTxtListener(iconDialogView); addIconDialogSearchTxtListener(iconDialogView);
} }
@ -93,7 +93,7 @@ public class NewProjectActivity extends BaseActivity {
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
iconRecycleAdapter.change(null, item -> item.getIcon().contains(s.toString())); iconRecycleAdapter.change(item -> item.getIcon().contains(s.toString()));
} }
}); });
} }
@ -110,35 +110,34 @@ public class NewProjectActivity extends BaseActivity {
LinearLayoutManager layoutManager = new LinearLayoutManager(this); LinearLayoutManager layoutManager = new LinearLayoutManager(this);
iconDialogRecyclerView.setLayoutManager(layoutManager); iconDialogRecyclerView.setLayoutManager(layoutManager);
iconRecycleAdapter = new IconRecycleAdapter(this, CommunityMaterial.Icon.class); iconRecycleAdapter = new IconRecycleAdapter(this);
iconDialogRecyclerView.setAdapter(iconRecycleAdapter); iconDialogRecyclerView.setAdapter(iconRecycleAdapter);
} }
private void initIconDialogSpinner(View iconDialogView) { private void initIconDialogSpinner(View iconDialogView) {
Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet(); // Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet();
ArrayList<String> keys = new ArrayList<>(keySet); // ArrayList<String> keys = new ArrayList<>(keySet);
Collections.sort(keys); // Collections.sort(keys);
//
Spinner iconDialogSpinner = iconDialogView.findViewById(R.id.icons_dialog_select); // Spinner iconDialogSpinner = iconDialogView.findViewById(R.id.icons_dialog_select);
iconDialogSpinner.setAdapter(new ArrayAdapter<String>(this, com.necer.R.layout.support_simple_spinner_dropdown_item, keys)); // iconDialogSpinner.setAdapter(new ArrayAdapter<String>(this, com.necer.R.layout.support_simple_spinner_dropdown_item, keys));
iconDialogSpinner.setSelection(0); // iconDialogSpinner.setSelection(0);
//
iconDialogSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // iconDialogSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@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 str = ((TextView) iconDialogView.findViewById(R.id.icons_dialog_search)).getText().toString();
String str = ((TextView) iconDialogView.findViewById(R.id.icons_dialog_search)).getText().toString(); // Predicate<SavedIcon> filter = item -> true;
Predicate<SavedIcon> filter = item -> true; // if (null != str && str.length() > 0) {
if (null != str && str.length() > 0) { // filter = item -> item.getIcon().contains(str);
filter = item -> item.getIcon().contains(str); // }
} // iconRecycleAdapter.change(filter);
iconRecycleAdapter.change(key, filter); // }
} //
// @Override
@Override // public void onNothingSelected(AdapterView<?> parent) {
public void onNothingSelected(AdapterView<?> parent) { // }
} // });
});
} }
@Override @Override

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

@ -8,11 +8,11 @@
android:padding="10dp" android:padding="10dp"
tools:context=".ui.setting.icon.IconFragment"> tools:context=".ui.setting.icon.IconFragment">
<!--
<Spinner <Spinner
android:id="@+id/icons_select" android:id="@+id/icons_select"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="35dp" /> android:layout_height="35dp" />-->
<EditText <EditText
android:id="@+id/icons_search" android:id="@+id/icons_search"

4
app/src/main/res/layout/fragment_icon_dialog.xml

@ -7,10 +7,10 @@
android:padding="10dp"> android:padding="10dp">
<Spinner <!-- <Spinner
android:id="@+id/icons_dialog_select" android:id="@+id/icons_dialog_select"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="35dp" /> android:layout_height="35dp" />-->
<EditText <EditText
android:id="@+id/icons_dialog_search" android:id="@+id/icons_dialog_search"

Loading…
Cancel
Save