Skip to content

Commit 9b086ba

Browse files
committed
1.Deprecated interface ItemProvideTag
2. Replace reflections with native methods
1 parent 8853f3e commit 9b086ba

File tree

4 files changed

+23
-36
lines changed

4 files changed

+23
-36
lines changed

library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java

+4-29
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313

1414
/**
1515
* https://github.com/chaychan
16+
*
1617
* @author ChayChan
17-
* @description:
18-
* When there are multiple entries, avoid too much business logic in convert(),Put the logic of each item in the corresponding ItemProvider
18+
* @description: When there are multiple entries, avoid too much business logic in convert(),Put the logic of each item in the corresponding ItemProvider
1919
* 当有多种条目的时候,避免在convert()中做太多的业务逻辑,把逻辑放在对应的ItemProvider中
2020
* @date 2018/3/21 9:55
2121
*/
2222

23-
public abstract class MultipleItemRvAdapter<T,V extends BaseViewHolder> extends BaseQuickAdapter<T, V> {
23+
public abstract class MultipleItemRvAdapter<T, V extends BaseViewHolder> extends BaseQuickAdapter<T, V> {
2424

2525
private SparseArray<BaseItemProvider> mItemProviders;
2626
protected ProviderDelegate mProviderDelegate;
@@ -49,12 +49,9 @@ protected int getItemType(T t) {
4949
mItemProviders = mProviderDelegate.getItemProviders();
5050
for (int i = 0; i < mItemProviders.size(); i++) {
5151
int key = mItemProviders.keyAt(i);
52-
5352
BaseItemProvider provider = mItemProviders.get(key);
5453
provider.mData = mData;
55-
56-
ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class);
57-
getMultiTypeDelegate().registerItemType(key, tag.layout());
54+
getMultiTypeDelegate().registerItemType(key, provider.layout());
5855
}
5956
}
6057

@@ -66,30 +63,8 @@ protected int getItemType(T t) {
6663
protected void convert(V helper, T item) {
6764
int itemViewType = helper.getItemViewType();
6865
BaseItemProvider provider = mItemProviders.get(itemViewType);
69-
7066
provider.mContext = helper.itemView.getContext();
71-
7267
int position = helper.getLayoutPosition() - getHeaderLayoutCount();
7368
provider.convert(helper, item, position);
74-
75-
bindClick(helper, item, position, provider);
76-
}
77-
78-
private void bindClick(final V helper, final T item, final int position, final BaseItemProvider provider) {
79-
View itemView = helper.itemView;
80-
81-
itemView.setOnClickListener(new View.OnClickListener() {
82-
@Override
83-
public void onClick(View v) {
84-
provider.onClick(helper, item, position);
85-
}
86-
});
87-
88-
itemView.setOnLongClickListener(new View.OnLongClickListener() {
89-
@Override
90-
public boolean onLongClick(View v) {
91-
return provider.onLongClick(helper, item, position);
92-
}
93-
});
9469
}
9570
}

library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java

+3
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77

88
/**
99
* https://github.com/chaychan
10+
*
1011
* @author ChayChan
1112
* @description: ItemProvider's annotation
1213
* @date 2018/3/21 10:48
1314
*/
1415

1516
@Target({ElementType.TYPE})
1617
@Retention(RetentionPolicy.RUNTIME)
18+
@Deprecated
1719
public @interface ItemProviderTag {
1820
int viewType();
21+
1922
int layout();
2023
}

library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java

+14-4
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,29 @@
88

99
/**
1010
* https://github.com/chaychan
11+
*
1112
* @author ChayChan
1213
* @description: The base class of ItemProvider
1314
* @date 2018/3/21 10:41
1415
*/
1516

16-
public abstract class BaseItemProvider<T,V extends BaseViewHolder> {
17+
public abstract class BaseItemProvider<T, V extends BaseViewHolder> {
1718

1819
public Context mContext;
1920
public List<T> mData;
2021

21-
public abstract void convert(V helper, T data, int position);
22+
/**
23+
*
24+
* @return
25+
*/
26+
public abstract int viewType();
27+
28+
/**
29+
*
30+
* @return
31+
*/
32+
public abstract int layout();
2233

23-
public abstract void onClick(V helper, T data, int position);
34+
public abstract void convert(V helper, T data, int position);
2435

25-
public abstract boolean onLongClick(V helper, T data, int position);
2636
}

library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ public class ProviderDelegate {
1616
private SparseArray<BaseItemProvider> mItemProviders = new SparseArray<>();
1717

1818
public void registerProvider(BaseItemProvider provider){
19-
ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class);
20-
if (tag == null){
19+
if (provider == null){
2120
throw new ItemProviderAnnotationException("ItemProviderTag not def layout");
2221
}
2322

24-
int viewType = tag.viewType();
23+
int viewType = provider.viewType();
2524
if (mItemProviders.get(viewType) == null){
2625
mItemProviders.put(viewType,provider);
2726
}

0 commit comments

Comments
 (0)