Skip to content

Commit

Permalink
Merge pull request #1 from CymChad/master
Browse files Browse the repository at this point in the history
pull request
  • Loading branch information
yuminfeng authored Sep 4, 2018
2 parents 9fbbedc + 243ec7f commit a464e90
Show file tree
Hide file tree
Showing 30 changed files with 1,245 additions and 36 deletions.
15 changes: 6 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,18 @@ jdk: oraclejdk8
sudo: false

android:
components:
components:
- tools
- build-tools-26.0.2
- android-26
- platform-tools
- build-tools-27.0.2
- android-27
- extra-android-m2repository
- extra-android-support
licenses:
- android-sdk-license-.+
- '.+'

before_install:
- chmod +x gradlew
- mkdir "$ANDROID_HOME/licenses" || true
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
# Hack to accept Android licenses
- yes | sdkmanager "platforms;android-27"

script:
- ./gradlew assembleRelease
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
![](https://user-images.githubusercontent.com/7698209/33198075-ef8f2230-d123-11e7-85a3-4cb9b22f877d.png)
[![](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)
[![](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)
# BRVAH
http://www.recyclerview.org/
Powerful and flexible RecyclerAdapter,
Expand All @@ -8,7 +8,7 @@ Please feel free to use this. (Welcome to **Star** and **Fork**)
kotlin demo :[BRVAH_kotlin](https://github.com/AllenCoder/BRVAH_kotlin)
# Document
- [English](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki)
- [中文](http://www.jianshu.com/p/b343fcff51b0)
- [中文](http://www.jianshu.com/p/b343fcff51b0)

## [UI](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694)
## Demo
Expand Down Expand Up @@ -53,5 +53,3 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
# 推荐
![](https://user-images.githubusercontent.com/7698209/33198309-4908849a-d125-11e7-80eb-a80c64d61c77.jpeg)
10 changes: 5 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 26
compileSdkVersion 27

defaultConfig {
applicationId "com.chad.baserecyclerviewadapterhelper"
minSdkVersion 14
targetSdkVersion 26
targetSdkVersion 27
versionCode 5
versionName "2.1"
}
Expand All @@ -28,9 +28,9 @@ dependencies {
implementation project(path: ':library')
implementation project(':material-spinner-1.0.5')
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support:cardview-v7:26.1.0'
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.kyleduo.switchbutton:library:2.0.0'
implementation 'com.orhanobut:logger:2.1.1'
}
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
<activity android:name=".AnimationUseActivity" />
<activity android:name=".HeaderAndFooterUseActivity" />
<activity android:name=".SectionUseActivity" />
<activity android:name=".ChooseMultipleItemUseTypeActivity" />
<activity android:name=".MultipleItemUseActivity" />
<activity android:name=".MultipleItemRvAdapterUseActivity" />
<activity android:name=".EmptyViewUseActivity" />
<activity android:name=".ItemDragAndSwipeUseActivity" />
<activity android:name=".ExpandableUseActivity" />
Expand All @@ -33,6 +35,7 @@
android:name=".HomeActivity"
android:launchMode="singleTask"></activity>
<activity android:name=".UpFetchUseActivity" />
<activity android:name=".SectionMultipleItemUseActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.chad.baserecyclerviewadapterhelper;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;

/**
* https://github.com/chaychan
* @author ChayChan
* @description: ChooseMultipleItemUseType
* @date 2018/3/30 10:14
*/

public class ChooseMultipleItemUseTypeActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_choose_multiple_item_use_type);
setTitle("MultipleItem Use");
setBackBtn();

findViewById(R.id.card_view1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ChooseMultipleItemUseTypeActivity.this,MultipleItemUseActivity.class));
}
});

findViewById(R.id.card_view2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ChooseMultipleItemUseTypeActivity.this,MultipleItemRvAdapterUseActivity.class));
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
* https://github.com/CymChad/BaseRecyclerViewAdapterHelper
*/
public class HomeActivity extends AppCompatActivity {
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};
private static final String[] TITLE = {"Animation", "MultipleItem", "Header/Footer", "PullToRefresh", "Section", "EmptyView", "DragAndSwipe", "ItemClick", "ExpandableItem", "DataBinding", "UpFetchData"};
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};
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};
private static final String[] TITLE = {"Animation", "MultipleItem", "Header/Footer", "PullToRefresh", "Section", "EmptyView", "DragAndSwipe", "ItemClick", "ExpandableItem", "DataBinding", "UpFetchData", "SectionMultipleItem"};
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};
private ArrayList<HomeItem> mDataList;
private RecyclerView mRecyclerView;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.chad.baserecyclerviewadapterhelper;

import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter;
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
import com.chad.baserecyclerviewadapterhelper.data.DataServer;
import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem;
import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity;
import com.chad.library.adapter.base.BaseQuickAdapter;

import java.util.List;

/**
*
* @author ChayChan
* @description: MultipleItemRvAdapter's usage
* @date 2018/3/30 10:54
*/

public class MultipleItemRvAdapterUseActivity extends BaseActivity {

private List<NormalMultipleEntity> mData;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_multiple_item_use);

setTitle("MultipleItemRvAdapter");
setBackBtn();

RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);
GridLayoutManager manager = new GridLayoutManager(this, 4);
mRecyclerView.setLayoutManager(manager);

mData = DataServer.getNormalMultipleEntities();
DemoMultipleItemRvAdapter multipleItemAdapter = new DemoMultipleItemRvAdapter(mData);

multipleItemAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
@Override
public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
int type = mData.get(position).type;
if (type == NormalMultipleEntity.SINGLE_TEXT) {
return MultipleItem.TEXT_SPAN_SIZE;
} else if (type == NormalMultipleEntity.SINGLE_IMG) {
return MultipleItem.IMG_SPAN_SIZE;
} else {
return MultipleItem.IMG_TEXT_SPAN_SIZE;
}
}
});

/**
* The click event is distributed to the BaseItemProvider and can be overridden.
* if you need register itemchild click longClick
* you need to use https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki/Add-OnItemClickLister#use-it-item-child-long-click
*/
/* @Override
protected void convert(BaseViewHolder helper, Status item) {
helper.setText(R.id.tweetName, item.getUserName())
.setText(R.id.tweetText, item.getText())
.setText(R.id.tweetDate, item.getCreatedAt())
.setVisible(R.id.tweetRT, item.isRetweet())
.addOnLongClickListener(R.id.tweetText)
.linkify(R.id.tweetText);
}
adapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() {
@Override
public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) {
Log.d(TAG, "onItemChildLongClick: ");
Toast.makeText(ItemClickActivity.this, "onItemChildLongClick" + position, Toast.LENGTH_SHORT).show();
}
});*/
// multipleItemAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
// @Override
// public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
// Log.d(TAG, "onItemClick: ");
// Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show();
// }
// });
// multipleItemAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
// @Override
// public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
// Log.d(TAG, "onItemClick: ");
// Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemChildClick" + view.getId(), Toast.LENGTH_SHORT).show();
// }
// });
mRecyclerView.setAdapter(multipleItemAdapter);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,11 @@ private void loadMore() {
new Request(mNextRequestPage, new RequestCallBack() {
@Override
public void success(List<Status> data) {
setData(false, data);
/**
* fix https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2400
*/
boolean isRefresh =mNextRequestPage ==1;
setData(isRefresh, data);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.chad.baserecyclerviewadapterhelper;

import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import com.chad.baserecyclerviewadapterhelper.adapter.SectionMultipleItemAdapter;
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
import com.chad.baserecyclerviewadapterhelper.data.DataServer;
import com.chad.baserecyclerviewadapterhelper.entity.SectionMultipleItem;
import com.chad.library.adapter.base.BaseQuickAdapter;

import java.util.List;

/**
* to get SectionMultipleItem you need follow two things
* 1.create entity which extend SectionMultiEntity
* 2.create adapter which extend BaseSectionMultiItemQuickAdapter
*/
public class SectionMultipleItemUseActivity extends BaseActivity {
private RecyclerView mRecyclerView;
private List<SectionMultipleItem> mData;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_section_uer);
setBackBtn();
setTitle("SectionMultiple Use");
mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

// 1. create entityList which item data extend SectionMultiEntity
mData = DataServer.getSectionMultiData();

// create adapter which extend BaseSectionMultiItemQuickAdapter provide your headerResId
SectionMultipleItemAdapter sectionAdapter = new SectionMultipleItemAdapter(R.layout.def_section_head, mData);
sectionAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
SectionMultipleItem item = (SectionMultipleItem) adapter.getData().get(position);
switch (view.getId()) {
case R.id.card_view:
// 获取主体item相应数据给后期使用
if (item.getVideo() != null) {
Toast.makeText(SectionMultipleItemUseActivity.this, item.getVideo().getName(), Toast.LENGTH_LONG).show();
}
break;
default:
Toast.makeText(SectionMultipleItemUseActivity.this, "OnItemChildClickListener " + position, Toast.LENGTH_LONG).show();
break;

}
}
});
mRecyclerView.setAdapter(sectionAdapter);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.chad.baserecyclerviewadapterhelper.adapter;

import android.support.annotation.Nullable;

import com.chad.baserecyclerviewadapterhelper.adapter.provider.ImgItemProvider;
import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextImgItemProvider;
import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextItemProvider;
import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity;
import com.chad.library.adapter.base.BaseViewHolder;
import com.chad.library.adapter.base.MultipleItemRvAdapter;

import java.util.List;

/**
* @author ChayChan
* modify by AllenCoder 2018/04/11
* @description: MultipleItemRvAdapter demo
* @date 2018/3/30 11:28
*/

public class DemoMultipleItemRvAdapter extends MultipleItemRvAdapter<NormalMultipleEntity, BaseViewHolder> {

public static final int TYPE_TEXT = 100;
public static final int TYPE_IMG = 200;
public static final int TYPE_TEXT_IMG = 300;

public DemoMultipleItemRvAdapter(@Nullable List<NormalMultipleEntity> data) {
super(data);

//构造函数若有传其他参数可以在调用finishInitialize()之前进行赋值,赋值给全局变量
//这样getViewType()和registerItemProvider()方法中可以获取到传过来的值
//getViewType()中可能因为某些业务逻辑,需要将某个值传递过来进行判断,返回对应的viewType
//registerItemProvider()中可以将值传递给ItemProvider

//If the constructor has other parameters, it needs to be assigned before calling finishInitialize() and assigned to the global variable
// This getViewType () and registerItemProvider () method can get the value passed over
// getViewType () may be due to some business logic, you need to pass a value to judge, return the corresponding viewType
//RegisterItemProvider() can pass value to ItemProvider

finishInitialize();
}

@Override
protected int getViewType(NormalMultipleEntity entity) {
//根据实体类判断并返回对应的viewType,具体判断逻辑因业务不同,这里这是简单通过判断type属性
//According to the entity class to determine and return the corresponding viewType,
//the specific judgment logic is different because of the business, here is simply by judging the type attribute
if (entity.type == NormalMultipleEntity.SINGLE_TEXT) {
return TYPE_TEXT;
} else if (entity.type == NormalMultipleEntity.SINGLE_IMG) {
return TYPE_IMG;
} else if (entity.type == NormalMultipleEntity.TEXT_IMG) {
return TYPE_TEXT_IMG;
}
return 0;
}

@Override
public void registerItemProvider() {
//注册相关的条目provider
//Register related entries provider
mProviderDelegate.registerProvider(new TextItemProvider());
mProviderDelegate.registerProvider(new ImgItemProvider());
mProviderDelegate.registerProvider(new TextImgItemProvider());
}
}
Loading

0 comments on commit a464e90

Please sign in to comment.