Skip to content

Commit a464e90

Browse files
authored
Merge pull request #1 from CymChad/master
pull request
2 parents 9fbbedc + 243ec7f commit a464e90

30 files changed

+1245
-36
lines changed

.travis.yml

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,18 @@ jdk: oraclejdk8
33
sudo: false
44

55
android:
6-
components:
6+
components:
77
- tools
8-
- build-tools-26.0.2
9-
- android-26
8+
- platform-tools
9+
- build-tools-27.0.2
10+
- android-27
1011
- extra-android-m2repository
1112
- extra-android-support
12-
licenses:
13-
- android-sdk-license-.+
14-
- '.+'
15-
1613
before_install:
1714
- chmod +x gradlew
1815
- mkdir "$ANDROID_HOME/licenses" || true
19-
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
20-
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
16+
# Hack to accept Android licenses
17+
- yes | sdkmanager "platforms;android-27"
2118

2219
script:
2320
- ./gradlew assembleRelease

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
![](https://user-images.githubusercontent.com/7698209/33198075-ef8f2230-d123-11e7-85a3-4cb9b22f877d.png)
2-
[![](https://jitpack.io/v/CymChad/BaseRecyclerViewAdapterHelper.svg)](https://jitpack.io/#CymChad/BaseRecyclerViewAdapterHelper)![](https://travis-ci.org/CymChad/BaseRecyclerViewAdapterHelper.svg?branch=master)[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14)[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-BaseRecyclerViewAdapterHelper-green.svg?style=true)](https://android-arsenal.com/details/1/3644)[![CircleCI](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master.svg?style=svg)](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/2302d0084d0048eaa0f9bac4350837a0)](https://www.codacy.com/app/CymChad/BaseRecyclerViewAdapterHelper?utm_source=github.com&utm_medium=referral&utm_content=CymChad/BaseRecyclerViewAdapterHelper&utm_campaign=Badge_Grade)[![](https://img.shields.io/badge/%E4%BD%9C%E8%80%85-%E9%99%88%E5%AE%87%E6%98%8E-7AD6FD.svg)](http://www.jianshu.com/u/f958e66439f0)
2+
[![](https://jitpack.io/v/CymChad/BaseRecyclerViewAdapterHelper.svg)](https://jitpack.io/#CymChad/BaseRecyclerViewAdapterHelper)![](https://travis-ci.org/CymChad/BaseRecyclerViewAdapterHelper.svg?branch=master)[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14)[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-BaseRecyclerViewAdapterHelper-green.svg?style=true)](https://android-arsenal.com/details/1/3644)[![CircleCI](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master.svg?style=svg)](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/2302d0084d0048eaa0f9bac4350837a0)](https://www.codacy.com/app/CymChad/BaseRecyclerViewAdapterHelper?utm_source=github.com&utm_medium=referral&utm_content=CymChad/BaseRecyclerViewAdapterHelper&utm_campaign=Badge_Grade)[![](https://img.shields.io/badge/%E4%BD%9C%E8%80%85-%E9%99%88%E5%AE%87%E6%98%8E-7AD6FD.svg)](https://www.zhihu.com/people/chen-yu-ming-98/activities)
33
# BRVAH
44
http://www.recyclerview.org/
55
Powerful and flexible RecyclerAdapter,
@@ -8,7 +8,7 @@ Please feel free to use this. (Welcome to **Star** and **Fork**)
88
kotlin demo :[BRVAH_kotlin](https://github.com/AllenCoder/BRVAH_kotlin)
99
# Document
1010
- [English](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki)
11-
- [中文](http://www.jianshu.com/p/b343fcff51b0)
11+
- [中文](http://www.jianshu.com/p/b343fcff51b0)
1212

1313
## [UI](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694)
1414
## Demo
@@ -53,5 +53,3 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5353
See the License for the specific language governing permissions and
5454
limitations under the License.
5555
```
56-
# 推荐
57-
![](https://user-images.githubusercontent.com/7698209/33198309-4908849a-d125-11e7-80eb-a80c64d61c77.jpeg)

app/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 26
4+
compileSdkVersion 27
55

66
defaultConfig {
77
applicationId "com.chad.baserecyclerviewadapterhelper"
88
minSdkVersion 14
9-
targetSdkVersion 26
9+
targetSdkVersion 27
1010
versionCode 5
1111
versionName "2.1"
1212
}
@@ -28,9 +28,9 @@ dependencies {
2828
implementation project(path: ':library')
2929
implementation project(':material-spinner-1.0.5')
3030
implementation 'com.github.bumptech.glide:glide:3.7.0'
31-
implementation 'com.android.support:design:26.1.0'
32-
implementation 'com.android.support:cardview-v7:26.1.0'
33-
implementation 'com.android.support:appcompat-v7:26.1.0'
31+
implementation 'com.android.support:design:27.1.1'
32+
implementation 'com.android.support:cardview-v7:27.1.1'
33+
implementation 'com.android.support:appcompat-v7:27.1.1'
3434
implementation 'com.kyleduo.switchbutton:library:2.0.0'
3535
implementation 'com.orhanobut:logger:2.1.1'
3636
}

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
<activity android:name=".AnimationUseActivity" />
2323
<activity android:name=".HeaderAndFooterUseActivity" />
2424
<activity android:name=".SectionUseActivity" />
25+
<activity android:name=".ChooseMultipleItemUseTypeActivity" />
2526
<activity android:name=".MultipleItemUseActivity" />
27+
<activity android:name=".MultipleItemRvAdapterUseActivity" />
2628
<activity android:name=".EmptyViewUseActivity" />
2729
<activity android:name=".ItemDragAndSwipeUseActivity" />
2830
<activity android:name=".ExpandableUseActivity" />
@@ -33,6 +35,7 @@
3335
android:name=".HomeActivity"
3436
android:launchMode="singleTask"></activity>
3537
<activity android:name=".UpFetchUseActivity" />
38+
<activity android:name=".SectionMultipleItemUseActivity" />
3639
</application>
3740

3841
</manifest>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.chad.baserecyclerviewadapterhelper;
2+
3+
import android.content.Intent;
4+
import android.os.Bundle;
5+
import android.view.View;
6+
7+
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
8+
9+
/**
10+
* https://github.com/chaychan
11+
* @author ChayChan
12+
* @description: ChooseMultipleItemUseType
13+
* @date 2018/3/30 10:14
14+
*/
15+
16+
public class ChooseMultipleItemUseTypeActivity extends BaseActivity {
17+
18+
@Override
19+
protected void onCreate(Bundle savedInstanceState) {
20+
super.onCreate(savedInstanceState);
21+
setContentView(R.layout.activity_choose_multiple_item_use_type);
22+
setTitle("MultipleItem Use");
23+
setBackBtn();
24+
25+
findViewById(R.id.card_view1).setOnClickListener(new View.OnClickListener() {
26+
@Override
27+
public void onClick(View v) {
28+
startActivity(new Intent(ChooseMultipleItemUseTypeActivity.this,MultipleItemUseActivity.class));
29+
}
30+
});
31+
32+
findViewById(R.id.card_view2).setOnClickListener(new View.OnClickListener() {
33+
@Override
34+
public void onClick(View v) {
35+
startActivity(new Intent(ChooseMultipleItemUseTypeActivity.this,MultipleItemRvAdapterUseActivity.class));
36+
}
37+
});
38+
}
39+
}

app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
* https://github.com/CymChad/BaseRecyclerViewAdapterHelper
1919
*/
2020
public class HomeActivity extends AppCompatActivity {
21-
private static final Class<?>[] ACTIVITY = {AnimationUseActivity.class, MultipleItemUseActivity.class, HeaderAndFooterUseActivity.class, PullToRefreshUseActivity.class, SectionUseActivity.class, EmptyViewUseActivity.class, ItemDragAndSwipeUseActivity.class, ItemClickActivity.class, ExpandableUseActivity.class, DataBindingUseActivity.class,UpFetchUseActivity.class};
22-
private static final String[] TITLE = {"Animation", "MultipleItem", "Header/Footer", "PullToRefresh", "Section", "EmptyView", "DragAndSwipe", "ItemClick", "ExpandableItem", "DataBinding", "UpFetchData"};
23-
private static final int[] IMG = {R.mipmap.gv_animation, R.mipmap.gv_multipleltem, R.mipmap.gv_header_and_footer, R.mipmap.gv_pulltorefresh, R.mipmap.gv_section, R.mipmap.gv_empty, R.mipmap.gv_drag_and_swipe, R.mipmap.gv_item_click, R.mipmap.gv_expandable, R.mipmap.gv_databinding,R.drawable.gv_up_fetch};
21+
private static final Class<?>[] ACTIVITY = {AnimationUseActivity.class, ChooseMultipleItemUseTypeActivity.class, HeaderAndFooterUseActivity.class, PullToRefreshUseActivity.class, SectionUseActivity.class, EmptyViewUseActivity.class, ItemDragAndSwipeUseActivity.class, ItemClickActivity.class, ExpandableUseActivity.class, DataBindingUseActivity.class,UpFetchUseActivity.class,SectionMultipleItemUseActivity.class};
22+
private static final String[] TITLE = {"Animation", "MultipleItem", "Header/Footer", "PullToRefresh", "Section", "EmptyView", "DragAndSwipe", "ItemClick", "ExpandableItem", "DataBinding", "UpFetchData", "SectionMultipleItem"};
23+
private static final int[] IMG = {R.mipmap.gv_animation, R.mipmap.gv_multipleltem, R.mipmap.gv_header_and_footer, R.mipmap.gv_pulltorefresh, R.mipmap.gv_section, R.mipmap.gv_empty, R.mipmap.gv_drag_and_swipe, R.mipmap.gv_item_click, R.mipmap.gv_expandable, R.mipmap.gv_databinding,R.drawable.gv_up_fetch, R.mipmap.gv_multipleltem};
2424
private ArrayList<HomeItem> mDataList;
2525
private RecyclerView mRecyclerView;
2626

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.chad.baserecyclerviewadapterhelper;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.widget.GridLayoutManager;
5+
import android.support.v7.widget.RecyclerView;
6+
import android.util.Log;
7+
import android.view.View;
8+
import android.widget.Toast;
9+
10+
import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter;
11+
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
12+
import com.chad.baserecyclerviewadapterhelper.data.DataServer;
13+
import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem;
14+
import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity;
15+
import com.chad.library.adapter.base.BaseQuickAdapter;
16+
17+
import java.util.List;
18+
19+
/**
20+
*
21+
* @author ChayChan
22+
* @description: MultipleItemRvAdapter's usage
23+
* @date 2018/3/30 10:54
24+
*/
25+
26+
public class MultipleItemRvAdapterUseActivity extends BaseActivity {
27+
28+
private List<NormalMultipleEntity> mData;
29+
30+
@Override
31+
protected void onCreate(Bundle savedInstanceState) {
32+
super.onCreate(savedInstanceState);
33+
setContentView(R.layout.activity_multiple_item_use);
34+
35+
setTitle("MultipleItemRvAdapter");
36+
setBackBtn();
37+
38+
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);
39+
GridLayoutManager manager = new GridLayoutManager(this, 4);
40+
mRecyclerView.setLayoutManager(manager);
41+
42+
mData = DataServer.getNormalMultipleEntities();
43+
DemoMultipleItemRvAdapter multipleItemAdapter = new DemoMultipleItemRvAdapter(mData);
44+
45+
multipleItemAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
46+
@Override
47+
public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
48+
int type = mData.get(position).type;
49+
if (type == NormalMultipleEntity.SINGLE_TEXT) {
50+
return MultipleItem.TEXT_SPAN_SIZE;
51+
} else if (type == NormalMultipleEntity.SINGLE_IMG) {
52+
return MultipleItem.IMG_SPAN_SIZE;
53+
} else {
54+
return MultipleItem.IMG_TEXT_SPAN_SIZE;
55+
}
56+
}
57+
});
58+
59+
/**
60+
* The click event is distributed to the BaseItemProvider and can be overridden.
61+
* if you need register itemchild click longClick
62+
* you need to use https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki/Add-OnItemClickLister#use-it-item-child-long-click
63+
*/
64+
/* @Override
65+
protected void convert(BaseViewHolder helper, Status item) {
66+
helper.setText(R.id.tweetName, item.getUserName())
67+
.setText(R.id.tweetText, item.getText())
68+
.setText(R.id.tweetDate, item.getCreatedAt())
69+
.setVisible(R.id.tweetRT, item.isRetweet())
70+
.addOnLongClickListener(R.id.tweetText)
71+
.linkify(R.id.tweetText);
72+
73+
}
74+
adapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() {
75+
@Override
76+
public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) {
77+
Log.d(TAG, "onItemChildLongClick: ");
78+
Toast.makeText(ItemClickActivity.this, "onItemChildLongClick" + position, Toast.LENGTH_SHORT).show();
79+
}
80+
});*/
81+
// multipleItemAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
82+
// @Override
83+
// public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
84+
// Log.d(TAG, "onItemClick: ");
85+
// Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show();
86+
// }
87+
// });
88+
// multipleItemAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
89+
// @Override
90+
// public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
91+
// Log.d(TAG, "onItemClick: ");
92+
// Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemChildClick" + view.getId(), Toast.LENGTH_SHORT).show();
93+
// }
94+
// });
95+
mRecyclerView.setAdapter(multipleItemAdapter);
96+
}
97+
}

app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,11 @@ private void loadMore() {
183183
new Request(mNextRequestPage, new RequestCallBack() {
184184
@Override
185185
public void success(List<Status> data) {
186-
setData(false, data);
186+
/**
187+
* fix https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2400
188+
*/
189+
boolean isRefresh =mNextRequestPage ==1;
190+
setData(isRefresh, data);
187191
}
188192

189193
@Override
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.chad.baserecyclerviewadapterhelper;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.widget.LinearLayoutManager;
5+
import android.support.v7.widget.RecyclerView;
6+
import android.view.View;
7+
import android.widget.Toast;
8+
9+
import com.chad.baserecyclerviewadapterhelper.adapter.SectionMultipleItemAdapter;
10+
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
11+
import com.chad.baserecyclerviewadapterhelper.data.DataServer;
12+
import com.chad.baserecyclerviewadapterhelper.entity.SectionMultipleItem;
13+
import com.chad.library.adapter.base.BaseQuickAdapter;
14+
15+
import java.util.List;
16+
17+
/**
18+
* to get SectionMultipleItem you need follow two things
19+
* 1.create entity which extend SectionMultiEntity
20+
* 2.create adapter which extend BaseSectionMultiItemQuickAdapter
21+
*/
22+
public class SectionMultipleItemUseActivity extends BaseActivity {
23+
private RecyclerView mRecyclerView;
24+
private List<SectionMultipleItem> mData;
25+
26+
@Override
27+
protected void onCreate(Bundle savedInstanceState) {
28+
super.onCreate(savedInstanceState);
29+
setContentView(R.layout.activity_section_uer);
30+
setBackBtn();
31+
setTitle("SectionMultiple Use");
32+
mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);
33+
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
34+
35+
// 1. create entityList which item data extend SectionMultiEntity
36+
mData = DataServer.getSectionMultiData();
37+
38+
// create adapter which extend BaseSectionMultiItemQuickAdapter provide your headerResId
39+
SectionMultipleItemAdapter sectionAdapter = new SectionMultipleItemAdapter(R.layout.def_section_head, mData);
40+
sectionAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
41+
@Override
42+
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
43+
SectionMultipleItem item = (SectionMultipleItem) adapter.getData().get(position);
44+
switch (view.getId()) {
45+
case R.id.card_view:
46+
// 获取主体item相应数据给后期使用
47+
if (item.getVideo() != null) {
48+
Toast.makeText(SectionMultipleItemUseActivity.this, item.getVideo().getName(), Toast.LENGTH_LONG).show();
49+
}
50+
break;
51+
default:
52+
Toast.makeText(SectionMultipleItemUseActivity.this, "OnItemChildClickListener " + position, Toast.LENGTH_LONG).show();
53+
break;
54+
55+
}
56+
}
57+
});
58+
mRecyclerView.setAdapter(sectionAdapter);
59+
}
60+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.chad.baserecyclerviewadapterhelper.adapter;
2+
3+
import android.support.annotation.Nullable;
4+
5+
import com.chad.baserecyclerviewadapterhelper.adapter.provider.ImgItemProvider;
6+
import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextImgItemProvider;
7+
import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextItemProvider;
8+
import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity;
9+
import com.chad.library.adapter.base.BaseViewHolder;
10+
import com.chad.library.adapter.base.MultipleItemRvAdapter;
11+
12+
import java.util.List;
13+
14+
/**
15+
* @author ChayChan
16+
* modify by AllenCoder 2018/04/11
17+
* @description: MultipleItemRvAdapter demo
18+
* @date 2018/3/30 11:28
19+
*/
20+
21+
public class DemoMultipleItemRvAdapter extends MultipleItemRvAdapter<NormalMultipleEntity, BaseViewHolder> {
22+
23+
public static final int TYPE_TEXT = 100;
24+
public static final int TYPE_IMG = 200;
25+
public static final int TYPE_TEXT_IMG = 300;
26+
27+
public DemoMultipleItemRvAdapter(@Nullable List<NormalMultipleEntity> data) {
28+
super(data);
29+
30+
//构造函数若有传其他参数可以在调用finishInitialize()之前进行赋值,赋值给全局变量
31+
//这样getViewType()和registerItemProvider()方法中可以获取到传过来的值
32+
//getViewType()中可能因为某些业务逻辑,需要将某个值传递过来进行判断,返回对应的viewType
33+
//registerItemProvider()中可以将值传递给ItemProvider
34+
35+
//If the constructor has other parameters, it needs to be assigned before calling finishInitialize() and assigned to the global variable
36+
// This getViewType () and registerItemProvider () method can get the value passed over
37+
// getViewType () may be due to some business logic, you need to pass a value to judge, return the corresponding viewType
38+
//RegisterItemProvider() can pass value to ItemProvider
39+
40+
finishInitialize();
41+
}
42+
43+
@Override
44+
protected int getViewType(NormalMultipleEntity entity) {
45+
//根据实体类判断并返回对应的viewType,具体判断逻辑因业务不同,这里这是简单通过判断type属性
46+
//According to the entity class to determine and return the corresponding viewType,
47+
//the specific judgment logic is different because of the business, here is simply by judging the type attribute
48+
if (entity.type == NormalMultipleEntity.SINGLE_TEXT) {
49+
return TYPE_TEXT;
50+
} else if (entity.type == NormalMultipleEntity.SINGLE_IMG) {
51+
return TYPE_IMG;
52+
} else if (entity.type == NormalMultipleEntity.TEXT_IMG) {
53+
return TYPE_TEXT_IMG;
54+
}
55+
return 0;
56+
}
57+
58+
@Override
59+
public void registerItemProvider() {
60+
//注册相关的条目provider
61+
//Register related entries provider
62+
mProviderDelegate.registerProvider(new TextItemProvider());
63+
mProviderDelegate.registerProvider(new ImgItemProvider());
64+
mProviderDelegate.registerProvider(new TextImgItemProvider());
65+
}
66+
}

0 commit comments

Comments
 (0)