Commit bafe0abf authored by fallenstardust's avatar fallenstardust

合并卡包展示、高亮词查询、关联卡片处理集中到CardDetail并统一监听方法

parent 1d534200
...@@ -224,7 +224,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -224,7 +224,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
if (cardInfo == null) { if (cardInfo == null) {
return; return;
} }
mListener.onGetRelatedCardList(relatedCards(cardInfo)); mListener.onShowCardList(relatedCards(cardInfo));
} }
}); });
findViewById(R.id.lastone).setOnClickListener((v) -> { findViewById(R.id.lastone).setOnClickListener((v) -> {
...@@ -319,7 +319,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -319,7 +319,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
private void showPackList(Card cardInfo) { private void showPackList(Card cardInfo) {
Integer idToUse = cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code; Integer idToUse = cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code;
mListener.onShowPackList(packManager.getCards(cardLoader, idToUse)); mListener.onShowCardList(packManager.getCards(cardLoader, idToUse));
} }
public void setHighlightTextWithClickableSpans(String text) { public void setHighlightTextWithClickableSpans(String text) {
...@@ -391,7 +391,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -391,7 +391,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
if (color != Color.WHITE) { if (color != Color.WHITE) {
// 获取被点击的文本内容 // 获取被点击的文本内容
String clickedText = ((TextView) widget).getText().subSequence(start, end).toString(); String clickedText = ((TextView) widget).getText().subSequence(start, end).toString();
mListener.onSearchKeyWord(clickedText); mListener.onShowCardList(queryList(clickedText));
} else { } else {
YGOUtil.showTextToast(context.getString(R.string.searchresult) + context.getString(R.string.already_end)); YGOUtil.showTextToast(context.getString(R.string.searchresult) + context.getString(R.string.already_end));
} }
...@@ -406,24 +406,32 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -406,24 +406,32 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
}, start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); }, start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
} }
private boolean queryable(String keyword) { private List<Card> queryList(String keyword) {
// 检查关键词是否为空或仅包含空白字符 long setcode = DataManager.get().getStringManager().getSetCode(keyword);
if (TextUtils.isEmpty(keyword)) {
return false;
}
SparseArray<Card> cards = cardManager.getAllCards(); SparseArray<Card> cards = cardManager.getAllCards();
List<Card> matchingCards = new ArrayList<>(); List<Card> matchingCards = new ArrayList<>();
List<Long> cardInfoSetCodes = new ArrayList<>();
// 检查关键词是否存在于卡片名字或描述中 // 检查关键词是否存在于卡片名字或描述中
for (int i = 0; i < cards.size(); i++) { for (int i = 0; i < cards.size(); i++) {
Card card = cards.valueAt(i); Card card = cards.valueAt(i);
cardInfoSetCodes.clear();//每张卡调用前都清空字段表以防重复
// 将 card 的 setCode 转换为 List<Long>
for (long setCode : card.getSetCode()) {
if (setCode > 0) cardInfoSetCodes.add(setCode);
}
//关键词如果有对应字段则添加进去
if (cardInfoSetCodes.contains(setcode) && !matchingCards.contains(card)) matchingCards.add(card);
// 确保 card.Name 和 card.Desc 不为 null // 确保 card.Name 和 card.Desc 不为 null
if ((card.Name != null && card.Name.contains(keyword)) || if ((card.Name != null && card.Name.contains(keyword)) || (card.Desc != null && card.Desc.contains(keyword))) {
(card.Desc != null && card.Desc.contains(keyword))) { if (!matchingCards.contains(card)) matchingCards.add(card);
matchingCards.add(card);
} }
} }
return matchingCards;
}
private boolean queryable(String keyword) {
List<Card> matchingCards = queryList(keyword);
// 检查匹配结果 // 检查匹配结果
if (matchingCards.isEmpty()) { if (matchingCards.isEmpty()) {
return false; // 如果没有找到匹配的卡片,返回 false return false; // 如果没有找到匹配的卡片,返回 false
...@@ -453,7 +461,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -453,7 +461,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
List<String> highlightedTexts = new ArrayList<>(spanStringList); List<String> highlightedTexts = new ArrayList<>(spanStringList);
// 使用 ArrayList 来保存匹配的卡片 // 使用 ArrayList 来保存匹配的卡片
List<Card> matchingCards = new ArrayList<>(); List<Card> matchingCards = new ArrayList<>();
// 将 cardInfo 的 setCode 转换为 List<Long> // 将 cardInfo 的 setCode 转换为 List<Long>
List<Long> cardInfoSetCodes = new ArrayList<>(); List<Long> cardInfoSetCodes = new ArrayList<>();
for (long setCode : cardInfo.getSetCode()) { for (long setCode : cardInfo.getSetCode()) {
...@@ -785,11 +792,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -785,11 +792,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
void onImageUpdate(Card cardInfo); void onImageUpdate(Card cardInfo);
void onShowPackList(List<Card> packList); void onShowCardList(List<Card> cardList);
void onSearchKeyWord(String keyword);
void onGetRelatedCardList(List<Card> cardList);
void onClose(); void onClose();
} }
...@@ -813,17 +816,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -813,17 +816,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
} }
@Override @Override
public void onShowPackList(List<Card> packList) { public void onShowCardList(List<Card> cardList) {
}
@Override
public void onSearchKeyWord(String keyword) {
}
@Override
public void onGetRelatedCardList(List<Card> cardList) {
} }
......
...@@ -304,17 +304,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB ...@@ -304,17 +304,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
} }
@Override @Override
public void onShowPackList(List<Card> packList) { public void onShowCardList(List<Card> cardList) {
showCardList(packList, false);//保持原收录顺序,不排序
}
@Override
public void onSearchKeyWord(String keyword) {
showSearchKeyWord(keyword);
}
@Override
public void onGetRelatedCardList(List<Card> cardList) {
showCardList(cardList, true);//便于查看,排序 showCardList(cardList, true);//便于查看,排序
} }
...@@ -355,11 +345,6 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB ...@@ -355,11 +345,6 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
} }
} }
private void showSearchKeyWord(String keyword) {
CardSearchInfo searchInfo = new CardSearchInfo.Builder().keyword(keyword).types(new long[]{}).build();//构建CardSearchInfo时type不能为null
mCardLoader.search(searchInfo);
}
private void showCardList(List<Card> cardList, boolean sort) { private void showCardList(List<Card> cardList, boolean sort) {
if (!cardList.isEmpty()) { if (!cardList.isEmpty()) {
onSearchResult(sort ? mCardLoader.sort(cardList) : cardList, false);//根据情况不同,判断是否调用CardLoader的sort方法排序List<Card> onSearchResult(sort ? mCardLoader.sort(cardList) : cardList, false);//根据情况不同,判断是否调用CardLoader的sort方法排序List<Card>
...@@ -368,7 +353,6 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB ...@@ -368,7 +353,6 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
} }
} }
protected void showSearch(boolean autoclose) { protected void showSearch(boolean autoclose) {
if (autoclose && mDrawerlayout.isDrawerOpen(Constants.CARD_SEARCH_GRAVITY)) { if (autoclose && mDrawerlayout.isDrawerOpen(Constants.CARD_SEARCH_GRAVITY)) {
mDrawerlayout.closeDrawer(Constants.CARD_SEARCH_GRAVITY); mDrawerlayout.closeDrawer(Constants.CARD_SEARCH_GRAVITY);
......
...@@ -562,17 +562,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte ...@@ -562,17 +562,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
} }
@Override @Override
public void onShowPackList(List<Card> packList) { public void onShowCardList(List<Card> cardList) {
showCardList(packList, false);//保持原收录顺序,不排序
}
@Override
public void onSearchKeyWord(String keyword) {
showSearchKeyWord(keyword);//根据关键词搜索
}
@Override
public void onGetRelatedCardList(List<Card> cardList) {
showCardList(cardList, true);//便于查看,排序 showCardList(cardList, true);//便于查看,排序
} }
...@@ -624,11 +614,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte ...@@ -624,11 +614,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
} }
} }
private void showSearchKeyWord(String keyword) {
CardSearchInfo searchInfo = new CardSearchInfo.Builder().keyword(keyword).types(new long[]{}).build();//构建CardSearchInfo时type不能为null
mCardLoader.search(searchInfo);
}
private void showCardList(List<Card> cardList, boolean sort) { private void showCardList(List<Card> cardList, boolean sort) {
if (!cardList.isEmpty()) { if (!cardList.isEmpty()) {
onSearchResult(sort ? mCardLoader.sort(cardList) : cardList, false);//根据情况不同,判断是否调用CardLoader的sort方法排序List<Card> onSearchResult(sort ? mCardLoader.sort(cardList) : cardList, false);//根据情况不同,判断是否调用CardLoader的sort方法排序List<Card>
......
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
android:layout_marginLeft="5dp" android:layout_marginLeft="5dp"
android:background="@drawable/button2_bg" android:background="@drawable/button2_bg"
android:gravity="center" android:gravity="center"
android:paddingLeft="16dp"
android:paddingRight="16dp" android:paddingRight="16dp"
android:shadowColor="@color/black" android:shadowColor="@color/black"
android:text="@string/card_faq" android:text="@string/card_faq"
......
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