|
|
@ -1,9 +1,14 @@ |
|
|
|
package cc.niushuai.dididone.ui.setting.icon; |
|
|
|
package cc.niushuai.dididone.ui.setting.icon; |
|
|
|
|
|
|
|
|
|
|
|
import android.os.Bundle; |
|
|
|
import android.os.Bundle; |
|
|
|
|
|
|
|
import android.text.Editable; |
|
|
|
|
|
|
|
import android.text.TextWatcher; |
|
|
|
import android.view.LayoutInflater; |
|
|
|
import android.view.LayoutInflater; |
|
|
|
import android.view.View; |
|
|
|
import android.view.View; |
|
|
|
import android.view.ViewGroup; |
|
|
|
import android.view.ViewGroup; |
|
|
|
|
|
|
|
import android.widget.AdapterView; |
|
|
|
|
|
|
|
import android.widget.ArrayAdapter; |
|
|
|
|
|
|
|
import android.widget.Toast; |
|
|
|
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull; |
|
|
|
import androidx.annotation.NonNull; |
|
|
|
import androidx.annotation.Nullable; |
|
|
|
import androidx.annotation.Nullable; |
|
|
@ -15,11 +20,14 @@ import androidx.recyclerview.widget.RecyclerView; |
|
|
|
|
|
|
|
|
|
|
|
import com.mikepenz.fontawesome_typeface_library.FontAwesome; |
|
|
|
import com.mikepenz.fontawesome_typeface_library.FontAwesome; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.HashMap; |
|
|
|
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 cc.niushuai.dididone.R; |
|
|
|
import cc.niushuai.dididone.biz.entity.SavedIcon; |
|
|
|
import cc.niushuai.dididone.biz.entity.SavedIcon; |
|
|
|
import cc.niushuai.dididone.databinding.FragmentIconBinding; |
|
|
|
import cc.niushuai.dididone.databinding.FragmentIconBinding; |
|
|
|
import cc.niushuai.dididone.ui.base.InitAndSetListener; |
|
|
|
import cc.niushuai.dididone.ui.base.InitAndSetListener; |
|
|
@ -50,9 +58,40 @@ public class IconFragment extends Fragment implements InitAndSetListener { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void init() { |
|
|
|
public void init() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
initSpinner(); |
|
|
|
initRecyclerView(); |
|
|
|
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); |
|
|
|
|
|
|
|
iconRecycleAdapter.change(key, item -> true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @param parent The AdapterView that now contains no selected item. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
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)); |
|
|
|
DefaultItemAnimator itemAnimator = new DefaultItemAnimator(); |
|
|
|
DefaultItemAnimator itemAnimator = new DefaultItemAnimator(); |
|
|
@ -60,10 +99,11 @@ public class IconFragment extends Fragment implements InitAndSetListener { |
|
|
|
itemAnimator.setRemoveDuration(1000); |
|
|
|
itemAnimator.setRemoveDuration(1000); |
|
|
|
binding.iconsRecyclerView.setItemAnimator(itemAnimator); |
|
|
|
binding.iconsRecyclerView.setItemAnimator(itemAnimator); |
|
|
|
|
|
|
|
|
|
|
|
iconRecycleAdapter = new IconRecycleAdapter(getActivity(), FontAwesome.Icon.class); |
|
|
|
|
|
|
|
binding.iconsRecyclerView.setAdapter(iconRecycleAdapter); |
|
|
|
|
|
|
|
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); |
|
|
|
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); |
|
|
|
binding.iconsRecyclerView.setLayoutManager(layoutManager); |
|
|
|
binding.iconsRecyclerView.setLayoutManager(layoutManager); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
iconRecycleAdapter = new IconRecycleAdapter(getActivity(), FontAwesome.Icon.class); |
|
|
|
|
|
|
|
binding.iconsRecyclerView.setAdapter(iconRecycleAdapter); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -71,6 +111,28 @@ public class IconFragment extends Fragment implements InitAndSetListener { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void setListeners() { |
|
|
|
public void setListeners() { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void setSelectListener() { |
|
|
|
|
|
|
|
addIconSearchListener(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void addIconSearchListener() { |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
public void afterTextChanged(Editable s) { |
|
|
|
|
|
|
|
iconRecycleAdapter.change(null, item -> item.getIcon().contains(s.toString())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|