Commit cf96fb31 authored by fallenstardust's avatar fallenstardust

文件名搜卡组

parent 9cc0da2c
...@@ -3,8 +3,11 @@ package cn.garymb.ygomobile.utils; ...@@ -3,8 +3,11 @@ package cn.garymb.ygomobile.utils;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Build; import android.os.Build;
import android.text.Editable;
import android.text.InputType; import android.text.InputType;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
...@@ -40,11 +43,14 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus; ...@@ -40,11 +43,14 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.utils.recyclerview.DeckTypeTouchHelperCallback; import cn.garymb.ygomobile.utils.recyclerview.DeckTypeTouchHelperCallback;
public class YGODialogUtil { public class YGODialogUtil {
private static String TAG = "YGODialogUtil";
public static void dialogDeckSelect(Context context, String selectDeckPath, OnDeckMenuListener onDeckMenuListener) { public static void dialogDeckSelect(Context context, String selectDeckPath, OnDeckMenuListener onDeckMenuListener) {
ViewHolder viewHolder = new ViewHolder(context, selectDeckPath, onDeckMenuListener); ViewHolder viewHolder = new ViewHolder(context, selectDeckPath, onDeckMenuListener);
viewHolder.show(); viewHolder.show();
} }
public interface OnDeckMenuListener { public interface OnDeckMenuListener {
void onDeckSelect(DeckFile deckFile); void onDeckSelect(DeckFile deckFile);
...@@ -67,7 +73,8 @@ public class YGODialogUtil { ...@@ -67,7 +73,8 @@ public class YGODialogUtil {
private final int IMAGE_MOVE = 0; private final int IMAGE_MOVE = 0;
private final int IMAGE_COPY = 1; private final int IMAGE_COPY = 1;
private final int IMAGE_DEL = 2; private final int IMAGE_DEL = 2;
private final EditText et_input_deck_name;
private final LinearLayout ll_main_ui;
private final LinearLayout ll_move; private final LinearLayout ll_move;
private final LinearLayout ll_copy; private final LinearLayout ll_copy;
private final LinearLayout ll_del; private final LinearLayout ll_del;
...@@ -86,10 +93,14 @@ public class YGODialogUtil { ...@@ -86,10 +93,14 @@ public class YGODialogUtil {
ygoDialog = new DialogPlus(context); ygoDialog = new DialogPlus(context);
ygoDialog.setContentView(R.layout.dialog_deck_select); ygoDialog.setContentView(R.layout.dialog_deck_select);
ygoDialog.setTitle(R.string.category_manager); ygoDialog.setTitle(R.string.category_manager);
RecyclerView rv_type, rv_deck;
et_input_deck_name = ygoDialog.findViewById(R.id.input_deck_name);
RecyclerView rv_type, rv_deck, rv_result_list;
ll_main_ui = ygoDialog.findViewById(R.id.ll_main_ui);
rv_deck = ygoDialog.findViewById(R.id.rv_deck); rv_deck = ygoDialog.findViewById(R.id.rv_deck);
rv_type = ygoDialog.findViewById(R.id.rv_type); rv_type = ygoDialog.findViewById(R.id.rv_type);
rv_result_list = ygoDialog.findViewById(R.id.rv_result_list);
ll_move = ygoDialog.findViewById(R.id.ll_move); ll_move = ygoDialog.findViewById(R.id.ll_move);
ll_copy = ygoDialog.findViewById(R.id.ll_copy); ll_copy = ygoDialog.findViewById(R.id.ll_copy);
ll_del = ygoDialog.findViewById(R.id.ll_del); ll_del = ygoDialog.findViewById(R.id.ll_del);
...@@ -104,6 +115,7 @@ public class YGODialogUtil { ...@@ -104,6 +115,7 @@ public class YGODialogUtil {
hideAllDeckUtil(); hideAllDeckUtil();
rv_deck.setLayoutManager(new FastScrollLinearLayoutManager(context)); rv_deck.setLayoutManager(new FastScrollLinearLayoutManager(context));
rv_type.setLayoutManager(new FastScrollLinearLayoutManager(context)); rv_type.setLayoutManager(new FastScrollLinearLayoutManager(context));
rv_result_list.setLayoutManager(new FastScrollLinearLayoutManager(context));
List<DeckType> typeList = DeckUtil.getDeckTypeList(context); List<DeckType> typeList = DeckUtil.getDeckTypeList(context);
...@@ -136,10 +148,15 @@ public class YGODialogUtil { ...@@ -136,10 +148,15 @@ public class YGODialogUtil {
} }
} }
deckList = DeckUtil.getDeckList(typeList.get(typeSelectPosition).getPath()); deckList = DeckUtil.getDeckList(typeList.get(typeSelectPosition).getPath());
List<DeckFile> allDeckList = new ArrayList<>();
for (int i = 0; i < typeList.size(); i++) {
allDeckList.addAll(DeckUtil.getDeckList(typeList.get(i).getPath()));
Log.i(TAG, allDeckList.size() + "");
}
if (typeSelectPosition == 0) { if (typeSelectPosition == 0) {
if (AppsSettings.get().isReadExpansions()) { if (AppsSettings.get().isReadExpansions()) {
try { try {
deckList.addAll(DeckUtil.getExpansionsDeckList()); deckList.addAll(0, DeckUtil.getExpansionsDeckList());
} catch (IOException e) { } catch (IOException e) {
YGOUtil.show("额外卡库加载失败,原因为" + e); YGOUtil.show("额外卡库加载失败,原因为" + e);
} }
...@@ -158,7 +175,7 @@ public class YGODialogUtil { ...@@ -158,7 +175,7 @@ public class YGODialogUtil {
if (position == 0) { if (position == 0) {
if (AppsSettings.get().isReadExpansions()) { if (AppsSettings.get().isReadExpansions()) {
try { try {
deckList.addAll(DeckUtil.getExpansionsDeckList()); deckList.addAll(0, DeckUtil.getExpansionsDeckList());
} catch (IOException e) { } catch (IOException e) {
YGOUtil.show("额外卡库加载失败,原因为" + e); YGOUtil.show("额外卡库加载失败,原因为" + e);
} }
...@@ -172,7 +189,7 @@ public class YGODialogUtil { ...@@ -172,7 +189,7 @@ public class YGODialogUtil {
public void onItemSelect(int position, DeckFile item) { public void onItemSelect(int position, DeckFile item) {
if (deckAdp.isManySelect()) { if (deckAdp.isManySelect()) {
deckAdp.addManySelect(item); deckAdp.addManySelect(item);
if(deckAdp.getSelectList().size() == 0) { if (deckAdp.getSelectList().size() == 0) {
clearDeckSelect(); clearDeckSelect();
} }
deckAdp.notifyItemChanged(position); deckAdp.notifyItemChanged(position);
...@@ -195,13 +212,55 @@ public class YGODialogUtil { ...@@ -195,13 +212,55 @@ public class YGODialogUtil {
showAllDeckUtil(); showAllDeckUtil();
} }
deckAdp.addManySelect((DeckFile) adapter.getItem(position)); deckAdp.addManySelect((DeckFile) adapter.getItem(position));
if(deckAdp.getSelectList().size() == 0) { if (deckAdp.getSelectList().size() == 0) {
clearDeckSelect(); clearDeckSelect();
} }
deckAdp.notifyItemChanged(position); deckAdp.notifyItemChanged(position);
return true; return true;
} }
}); });
List<DeckFile> resultList = new ArrayList<>();
DeckListAdapter<DeckFile> resultListAdapter = new DeckListAdapter<DeckFile>(context, resultList, -1);
rv_result_list.setAdapter(resultListAdapter);
resultListAdapter.setOnItemSelectListener(new DeckListAdapter.OnItemSelectListener<DeckFile>() {
@Override
public void onItemSelect(int position, DeckFile item) {
rv_result_list.setVisibility(View.GONE);
ll_main_ui.setVisibility(View.VISIBLE);
et_input_deck_name.getEditableText().clear();
dismiss();
onDeckMenuListener.onDeckSelect(item);
}
});
et_input_deck_name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// 输入中监听
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// 输入前的监听
}
@Override
public void afterTextChanged(Editable s) {
// 输入后的监听
resultList.clear();
String keyword = et_input_deck_name.getText().toString();
if (keyword.isEmpty()) {
ll_main_ui.setVisibility(View.VISIBLE);
rv_result_list.setVisibility(View.GONE);
} else {
resultList.addAll(getResultList(keyword, allDeckList));
rv_result_list.setVisibility(View.VISIBLE);
ll_main_ui.setVisibility(View.GONE);
Log.i(TAG, et_input_deck_name.getText().toString() + "和" + resultList.size());
resultListAdapter.notifyDataSetChanged();
}
}
});
ll_add.setOnClickListener(new View.OnClickListener() { ll_add.setOnClickListener(new View.OnClickListener() {
@Override @Override
...@@ -422,6 +481,15 @@ public class YGODialogUtil { ...@@ -422,6 +481,15 @@ public class YGODialogUtil {
return types; return types;
} }
private List<DeckFile> getResultList(String keyword, List<DeckFile> deckList) {
List<DeckFile> resultList = new ArrayList<>();
for (int i = 0; i < deckList.size(); i++) {
if (deckList.get(i).getFileName().toLowerCase().contains(keyword.toLowerCase()))
resultList.add(deckList.get(i));
}
return resultList;
}
private List<String> getStringTypeList(List<DeckType> deckTypeList) { private List<String> getStringTypeList(List<DeckType> deckTypeList) {
List<String> typeList = new ArrayList<>(); List<String> typeList = new ArrayList<>();
for (int i = 0; i < deckTypeList.size(); i++) { for (int i = 0; i < deckTypeList.size(); i++) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment