Skip to content

Commit

Permalink
Merge pull request #2815 from AllenCoder/androidx
Browse files Browse the repository at this point in the history
Merge remote-tracking branch 'remotes/remote/master' into androidx
  • Loading branch information
AllenCoder authored Jul 21, 2019
2 parents 691b56e + 5d4379e commit 53d146a
Show file tree
Hide file tree
Showing 59 changed files with 1,375 additions and 267 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ jobs:
build:
working_directory: ~/code
docker:
- image: circleci/android:api-26-alpha
- image: circleci/android:api-28-alpha
environment:
JVM_OPTS: -Xmx3200m
steps:
Expand Down
7 changes: 7 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Thank you for contributing to BaseRecyclerViewAdapterHelper. Before pressing the "Create Pull Request" button, please consider the following points:

- [1] Please give a description about what and why you are contributing, even if it's trivial.

- [2] Please include the issue list number(s) or other PR numbers in the description if you are contributing in response to those.

- [3] Please include a reasonable set of demo tests if you contribute new code or change an existing one. please make sure you have demo for working correctly.
7 changes: 4 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
language: android
dist: trusty
jdk: oraclejdk8
sudo: false

android:
components:
- tools
- platform-tools
- build-tools-27.0.2
- android-27
- build-tools-28.0.3
- android-28
- extra-android-m2repository
- extra-android-support
before_install:
- chmod +x gradlew
- mkdir "$ANDROID_HOME/licenses" || true
# Hack to accept Android licenses
- yes | sdkmanager "platforms;android-27"
- yes | sdkmanager "platforms;android-28"

script:
- ./gradlew assembleRelease
81 changes: 80 additions & 1 deletion README-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ Activity
Toast.makeText(RecyclerClickItemActivity.this, "" + Integer.toString(position), Toast.LENGTH_SHORT).show();
}
});
```
```


# 如何使用它添加动画?
Expand Down Expand Up @@ -413,6 +413,85 @@ protected K createBaseViewHolder(View view) {

```

# DiffUtil
先继承`BaseQuickDiffCallback<T>`并实现:
```java
public class DiffDemoCallback extends BaseQuickDiffCallback<DiffUtilDemoEntity> {

public DiffDemoCallback(@Nullable List<DiffUtilDemoEntity> newList) {
super(newList);
}

/**
* 判断是否是同一个item
*
* @param oldItem New data
* @param newItem old Data
* @return
*/
@Override
protected boolean areItemsTheSame(DiffUtilDemoEntity oldItem, DiffUtilDemoEntity newItem) {
……
}

/**
* 当是同一个item时,再判断内容是否发生改变
*
* @param oldItem New data
* @param newItem old Data
* @return
*/
@Override
protected boolean areContentsTheSame(DiffUtilDemoEntity oldItem, DiffUtilDemoEntity newItem) {
……
}

/**
* 可选实现
* 如果需要精确修改某一个view中的内容,请实现此方法。
* 如果不实现此方法,或者返回null,将会直接刷新整个item。
*
* @param oldItem Old data
* @param newItem New data
* @return Payload info. if return null, the entire item will be refreshed.
*/
@Override
protected Object getChangePayload(DiffUtilDemoEntity oldItem, DiffUtilDemoEntity newItem) {
……
}
}
```

`BaseQuickAdapter`中实现`convertPayloads()`方法,用于局部更新:
```java
/**
*
* 当有 payload info 时,只会执行此方法
*
* @param helper A fully initialized helper.
* @param item The item that needs to be displayed.
* @param payloads payload info.
*/
@Override
protected void convertPayloads(BaseViewHolder helper, DiffUtilDemoEntity item, @NonNull List<Object> payloads) {
for (Object p : payloads) {
……
}
}
```

更新整个数据集时,使用如下方法:
```java
DiffDemoCallback callback = new DiffDemoCallback(getNewList());
mAdapter.setNewDiffData(callback);
```

更新单个item时,使用如下方法:
```java
mAdapter.notifyItemChanged(0, "payload info");
```


>**持续更新!,所以推荐Star项目**

# 感谢
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ kotlin demo :[BRVAH_kotlin](https://github.com/AllenCoder/BRVAH_kotlin)
-keepclassmembers class **$** extends com.chad.library.adapter.base.BaseViewHolder {
<init>(...);
}
-keepattributes InnerClasses
```

# Extension library
Expand Down
5 changes: 2 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ android {

defaultConfig {
applicationId "com.chad.baserecyclerviewadapterhelper"
minSdkVersion 14
minSdkVersion 16
targetSdkVersion 28
versionCode 5
versionName "2.1"
Expand All @@ -24,9 +24,8 @@ android {
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation project(path: ':library')
implementation project(':material-spinner-1.0.5')
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,16 +1,8 @@
package com.chad.baserecyclerviewadapterhelper;

import android.app.Application;
import android.test.ApplicationTestCase;

/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
public void test() {

}
public class ApplicationTest {

}
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
android:launchMode="singleTask"></activity>
<activity android:name=".UpFetchUseActivity" />
<activity android:name=".SectionMultipleItemUseActivity" />
<activity android:name=".DiffUtilActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@
public class AnimationUseActivity extends Activity {
private RecyclerView mRecyclerView;
private AnimationAdapter mAnimationAdapter;
private ImageView mImgBtn;
private int mFirstPageItemCount = 3;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -41,7 +39,7 @@ protected void onCreate(Bundle savedInstanceState) {

private void initView() {

mImgBtn = (ImageView) findViewById(R.id.img_back);
ImageView mImgBtn = (ImageView) findViewById(R.id.img_back);
mImgBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
Expand All @@ -53,6 +51,7 @@ public void onClick(final View v) {
private void initAdapter() {
mAnimationAdapter = new AnimationAdapter();
mAnimationAdapter.openLoadAnimation();
int mFirstPageItemCount = 3;
mAnimationAdapter.setNotDoAnimationCount(mFirstPageItemCount);
mAnimationAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
Expand All @@ -73,6 +72,8 @@ public void onItemChildClick(BaseQuickAdapter adapter, View view, int position)
Toast.makeText(AnimationUseActivity.this, content, Toast.LENGTH_LONG).show();
// you have set clickspan .so there should not solve any click event ,just empty
break;
default:
break;

}
}
Expand Down Expand Up @@ -112,7 +113,8 @@ public void onItemSelected(MaterialSpinner view, int position, long id, String i
mRecyclerView.setAdapter(mAnimationAdapter);
}
});
mAnimationAdapter.isFirstOnly(false);//init firstOnly state
//init firstOnly state
mAnimationAdapter.isFirstOnly(false);
SwitchButton switchButton = (SwitchButton) findViewById(R.id.switch_button);
switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
package com.chad.baserecyclerviewadapterhelper;

import android.os.Bundle;

import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import com.chad.baserecyclerviewadapterhelper.adapter.diffUtil.DiffDemoCallback;
import com.chad.baserecyclerviewadapterhelper.adapter.diffUtil.DiffUtilAdapter;
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
import com.chad.baserecyclerviewadapterhelper.data.DataServer;
import com.chad.baserecyclerviewadapterhelper.entity.DiffUtilDemoEntity;

import java.util.ArrayList;
import java.util.List;

/**
* Created by limuyang
* Date: 2019/7/14
*/
public class DiffUtilActivity extends BaseActivity {
private RecyclerView mRecyclerView;
private Button itemChangeBtn;
private Button notifyChangeBtn;

private DiffUtilAdapter mAdapter;


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

findView();
initRv();
initClick();
}

private void findView() {
mRecyclerView = findViewById(R.id.diff_rv);
itemChangeBtn = findViewById(R.id.item_change_btn);
notifyChangeBtn = findViewById(R.id.notify_change_btn);
}

private void initRv() {
mAdapter = new DiffUtilAdapter(DataServer.getDiffUtilDemoEntities());
mAdapter.bindToRecyclerView(mRecyclerView);

View view = getLayoutInflater().inflate(R.layout.head_view, mRecyclerView, false);
view.findViewById(R.id.iv).setVisibility(View.GONE);
mAdapter.addHeaderView(view);
}

private void initClick() {
itemChangeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DiffDemoCallback callback = new DiffDemoCallback(getNewList());
mAdapter.setNewDiffData(callback);
}
});

notifyChangeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// change item 0
mAdapter.getData().set(0, new DiffUtilDemoEntity(
1,
"😊😊Item " + 0,
"Item " + 0 + " content have change (notifyItemChanged)",
"06-12"));
mAdapter.notifyItemChanged(0 + mAdapter.getHeaderLayoutCount(), DiffUtilAdapter.ITEM_0_PAYLOAD);
}
});
}


/**
* get new data
*
* @return
*/
private List<DiffUtilDemoEntity> getNewList() {
List<DiffUtilDemoEntity> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
/*
Simulate deletion of data No. 1 and No. 3
模拟删除1号和3号数据
*/
if (i == 1 || i == 3) continue;

/*
Simulate modification title of data No. 0
模拟修改0号数据的title
*/
if (i == 0) {
list.add(new DiffUtilDemoEntity(
i,
"😊Item " + i,
"This item " + i + " content",
"06-12")
);
continue;
}

/*
Simulate modification content of data No. 4
模拟修改4号数据的content发生变化
*/
if (i == 4) {
list.add(new DiffUtilDemoEntity(
i,
"Item " + i,
"Oh~~~~~~, Item " + i + " content have change",
"06-12")
);
continue;
}

list.add(new DiffUtilDemoEntity(
i,
"Item " + i,
"This item " + i + " content",
"06-12")
);
}
return list;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ public class EmptyViewUseActivity extends BaseActivity implements View.OnClickLi
private QuickAdapter mQuickAdapter;
private View notDataView;
private View errorView;

private boolean mError = true;
private boolean mNoData = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -59,8 +60,7 @@ public void onClick(View v) {
onRefresh();
}

private boolean mError = true;
private boolean mNoData = true;


private void onRefresh() {
mQuickAdapter.setEmptyView(R.layout.loading_view, (ViewGroup) mRecyclerView.getParent());
Expand Down
Loading

0 comments on commit 53d146a

Please sign in to comment.