Commit 0d9cd2e8 authored by wangfugui's avatar wangfugui

Add some comments

parent 128eacba
......@@ -107,6 +107,10 @@ import ocgcore.data.Card;
import ocgcore.data.LimitList;
import ocgcore.enums.LimitType;
/**
* 注意,卡组编辑页面中的长按事件回调在ItemTouchHelperPlus中实现,而非在
* RecyclerViewItemListener.OnItemListener中
*/
public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewItemListener.OnItemListener, OnItemDragListener, YGODialogUtil.OnDeckMenuListener, CardLoader.CallBack, CardSearcher.CallBack {
private static final String TAG = "DeckManagerFragment";
protected DrawerLayout mDrawerLayout;
......@@ -298,6 +302,10 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
/**
* 在此处处理卡组中卡片的长按删除
* @param pos
*/
@Override
public void onDragLongPress(int pos) {
if (pos < 0) return;
......
......@@ -32,6 +32,9 @@ import ocgcore.data.LimitList;
import ocgcore.enums.CardType;
import ocgcore.enums.LimitType;
/**
* 在对应的recyclerview中添加了很多透明的item来“占位”,占位后便于根据“拖动卡片的位置”计算添加的卡片类型(是主卡组、额外卡组还是副卡组)
*/
public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implements CardListProvider {
private final List<DeckItem> mItems = new ArrayList<>();
private final SparseArray<Integer> mCount = new SparseArray<>();
......@@ -107,7 +110,7 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
int id = DeckItem.MainStart + getMainCount();
removeItem(DeckItem.MainEnd);
addItem(id, new DeckItem(cardInfo, type));
notifyItemChanged(DeckItem.MainEnd);
//notifyItemChanged(DeckItem.MainEnd);//todo 这行好像没啥用啊??
notifyItemChanged(id);
notifyItemChanged(DeckItem.MainLabel);
return true;
......@@ -452,12 +455,6 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
return !TextUtils.equals(mDeckMd5, md5);
}
@Override
public DeckViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mLayoutInflater.inflate(R.layout.item_deck_card, parent, false);
return new DeckViewHolder(view);
}
private String getString(int id, Object... args) {
return context.getString(id, args);
}
......@@ -543,13 +540,20 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
// notifyItemChanged(DeckItem.HeadView);
}
@Override
public DeckViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Inflating a layout from XML and returning the holder
View view = mLayoutInflater.inflate(R.layout.item_deck_card, parent, false);
return new DeckViewHolder(view);
}
@Override
public void onBindViewHolder(DeckViewHolder holder, int position) {
//Populating data into the item through holder
DeckItem item = mItems.get(position);
holder.setItemType(item.getType());
if (item.getType() == DeckItemType.MainLabel || item.getType() == DeckItemType.SideLabel
|| item.getType() == DeckItemType.ExtraLabel) {
//分隔栏
|| item.getType() == DeckItemType.ExtraLabel) {//处理分隔栏的item view
if (item.getType() == DeckItemType.MainLabel) {
holder.setText(getMainString());
} else if (item.getType() == DeckItemType.SideLabel) {
......@@ -557,7 +561,8 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
} else if (item.getType() == DeckItemType.ExtraLabel) {
holder.setText(getExtraString());
}
} else {
} else {//处理展示卡图的item view
/* 动态计算控件的高度,优先根据卡图的实际大小计算高度,如果结果<=0,则根据recyclerView的宽度计算控件高度 */
if (mHeight <= 0) {
if (holder.cardImage.getMeasuredWidth() > 0) {
mWidth = holder.cardImage.getMeasuredWidth();
......@@ -574,11 +579,10 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
//显示卡片
holder.showImage();
holder.setSize(mHeight);
if (item.getType() == DeckItemType.Space) {
//占位但是不显示卡图
if (item.getType() == DeckItemType.Space) {//占位,不显示卡图
holder.setCardType(0);
holder.showEmpty();
} else {
} else {//非占位,显示卡图
Card cardInfo = item.getCardInfo();
// holder.cardImage.setOnClickListener(new View.OnClickListener() {
......
package cn.garymb.ygomobile.ui.cards.deck;
/**
* DeckItemType的不同值对应着,recyclerView中的item的不同布局形式
*/
public enum DeckItemType {
MainLabel,
MainCard,
ExtraLabel,
ExtraCard,
SideLabel,
SideCard,
Space,
MainLabel,//对应“主卡组:60怪兽:21...“这种分隔标签
MainCard,//对应主卡组中的卡图控件
ExtraLabel,//额外卡组
ExtraCard,//对应额外卡组中的卡图控件
SideLabel,//副卡组
SideCard,//对应副卡组中的卡图控件
Space,//对应占位的卡图控件
Pack
}
......@@ -12,7 +12,11 @@ import androidx.recyclerview.widget.RecyclerView;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.ImageLoader;
// Provide a direct reference to each of the views within a data item
// Used to cache the views within the item layout for fast access
class DeckViewHolder extends RecyclerView.ViewHolder {
// Your holder should contain a member variable
// for any view that will be set as you render a row
private final View view;
private final View headView;
private final View textlayout;
......@@ -22,8 +26,11 @@ class DeckViewHolder extends RecyclerView.ViewHolder {
private long mCardType;
private DeckItemType mItemType;
// Create a constructor that accepts the entire item row
// and does the view lookups to find each subview
public DeckViewHolder(View view) {
// Stores the view in a public final member variable that can be used
// to access the context from any ViewHolder instance.
super(view);
this.view = view;
view.setTag(view.getId(), this);
......@@ -88,6 +95,10 @@ class DeckViewHolder extends RecyclerView.ViewHolder {
// imageLoader.$(outFile, cardImage, outFile.getName().endsWith(Constants.BPG), 0, null);
}
/**
* 只展示分隔标签(例如“主卡组:60怪兽:21“),隐藏掉卡图ImageView
* @param text
*/
public void setText(String text) {
labelText.setText(text);
textlayout.setVisibility(View.VISIBLE);
......@@ -95,6 +106,9 @@ class DeckViewHolder extends RecyclerView.ViewHolder {
rightImage.setVisibility(View.GONE);
}
/**
* 展示卡图,隐藏分隔标签
*/
public void showImage() {
textlayout.setVisibility(View.GONE);
cardImage.setVisibility(View.VISIBLE);
......
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