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 { @@ -51,44 +51,44 @@ public class IconFragment extends BaseFragment {
@Override
public void init() {
initSpinner();
// initSpinner();
initRecyclerView();
}
private void initSpinner() {
Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet();
ArrayList<String> keys = new ArrayList<>(keySet);
Collections.sort(keys);
binding.iconsSelect.setAdapter(new ArrayAdapter<String>(getContext(), com.necer.R.layout.support_simple_spinner_dropdown_item, keys));
binding.iconsSelect.setSelection(0);
binding.iconsSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
/**
* @param parent The AdapterView where the selection happened
* @param view The view within the AdapterView that was clicked
* @param position The position of the view in the adapter
* @param id The row id of the item that is selected
*/
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String key = keys.get(position);
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);
}
/**
* @param parent The AdapterView that now contains no selected item.
*/
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
// private void initSpinner() {
// Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet();
// ArrayList<String> keys = new ArrayList<>(keySet);
// Collections.sort(keys);
// binding.iconsSelect.setAdapter(new ArrayAdapter<String>(getContext(), com.necer.R.layout.support_simple_spinner_dropdown_item, keys));
// binding.iconsSelect.setSelection(0);
//
// binding.iconsSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// /**
// * @param parent The AdapterView where the selection happened
// * @param view The view within the AdapterView that was clicked
// * @param position The position of the view in the adapter
// * @param id The row id of the item that is selected
// */
// @Override
// public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// String key = keys.get(position);
// 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);
// }
//
// /**
// * @param parent The AdapterView that now contains no selected item.
// */
// @Override
// public void onNothingSelected(AdapterView<?> parent) {
//
// }
// });
// }
private void initRecyclerView() {
binding.iconsRecyclerView.addItemDecoration(new DividerItemDecoration(this.getActivity(), DividerItemDecoration.VERTICAL));
@ -100,7 +100,7 @@ public class IconFragment extends BaseFragment { @@ -100,7 +100,7 @@ public class IconFragment extends BaseFragment {
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
binding.iconsRecyclerView.setLayoutManager(layoutManager);
iconRecycleAdapter = new IconRecycleAdapter(getActivity(), CommunityMaterial.Icon.class);
iconRecycleAdapter = new IconRecycleAdapter(getActivity());
binding.iconsRecyclerView.setAdapter(iconRecycleAdapter);
}
@ -129,7 +129,7 @@ public class IconFragment extends BaseFragment { @@ -129,7 +129,7 @@ public class IconFragment extends BaseFragment {
@Override
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; @@ -14,6 +14,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.typeface.IIcon;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -30,15 +32,15 @@ public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter. @@ -30,15 +32,15 @@ public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter.
public static final Map<String, List<SavedIcon>> ICON_MAP = new HashMap<>();
int selectedPosition = -1;
int lastSelectedPosition = -1;
private Class<? extends IIcon> iconClass;
private List<SavedIcon> allIconList;
private List<SavedIcon> savedIconList;
private Activity activity;
private String selectedIcon;
public IconRecycleAdapter(Activity activity, Class<? extends IIcon> iconClass) {
public IconRecycleAdapter(Activity activity) {
this.activity = activity;
this.iconClass = iconClass;
change(getIconClassName(iconClass), item -> true);
this.allIconList = getIconValues();
change(item -> true);
}
public static String getIconClassName(Class<? extends IIcon> iconClass) {
@ -51,14 +53,18 @@ public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter. @@ -51,14 +53,18 @@ public class IconRecycleAdapter extends RecyclerView.Adapter<IconRecycleAdapter.
return selectedIcon;
}
public void change(String name, Predicate<? super SavedIcon> filter) {
if (null == name) {
name = getIconClassName(iconClass);
}
this.savedIconList = ICON_MAP.get(name).stream().filter(filter).collect(Collectors.toList());
public void change(Predicate<? super SavedIcon> filter) {
this.savedIconList = allIconList.stream().filter(filter).collect(Collectors.toList());
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
* 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 { @@ -74,7 +74,7 @@ public class NewProjectActivity extends BaseActivity {
initIconDialogRecyclerView(iconDialogView);
initIconDialogSpinner(iconDialogView);
// initIconDialogSpinner(iconDialogView);
addIconDialogSearchTxtListener(iconDialogView);
}
@ -93,7 +93,7 @@ public class NewProjectActivity extends BaseActivity { @@ -93,7 +93,7 @@ public class NewProjectActivity extends BaseActivity {
@Override
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 { @@ -110,35 +110,34 @@ public class NewProjectActivity extends BaseActivity {
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
iconDialogRecyclerView.setLayoutManager(layoutManager);
iconRecycleAdapter = new IconRecycleAdapter(this, CommunityMaterial.Icon.class);
iconRecycleAdapter = new IconRecycleAdapter(this);
iconDialogRecyclerView.setAdapter(iconRecycleAdapter);
}
private void initIconDialogSpinner(View iconDialogView) {
Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet();
ArrayList<String> keys = new ArrayList<>(keySet);
Collections.sort(keys);
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.setSelection(0);
iconDialogSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
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();
Predicate<SavedIcon> filter = item -> true;
if (null != str && str.length() > 0) {
filter = item -> item.getIcon().contains(str);
}
iconRecycleAdapter.change(key, filter);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// Set<String> keySet = IconRecycleAdapter.ICON_MAP.keySet();
// ArrayList<String> keys = new ArrayList<>(keySet);
// Collections.sort(keys);
//
// 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.setSelection(0);
//
// iconDialogSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// String str = ((TextView) iconDialogView.findViewById(R.id.icons_dialog_search)).getText().toString();
// Predicate<SavedIcon> filter = item -> true;
// if (null != str && str.length() > 0) {
// filter = item -> item.getIcon().contains(str);
// }
// iconRecycleAdapter.change(filter);
// }
//
// @Override
// public void onNothingSelected(AdapterView<?> parent) {
// }
// });
}
@Override

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

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

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

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

Loading…
Cancel
Save