这篇博客是我学习BRAVH框架的记录,学习的内容大致也是遵循BRAVH官方指南:官方指南
1.添加依赖
在app模块下的build里添加:
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
implementation 'com.android.support:recyclerview-v7:26+'
(遇到一个问题:recycleview的版本号我不知道怎么确定,查了一下也没查到,就用了一个‘+”号,有小伙伴知道在哪可以查到的请评论告诉我一下,非常感谢!)
在project下的build里添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后就可以在项目中使用了!
2.实现item的点击事件
1.首先需要写一个Adapter继承BaseQuickAdapter:
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.List;
/**
* Created by wjc on 2019/5/5.
*/
public class RecyclerViewAdapter extends BaseQuickAdapter<DataModel, RecyclerViewAdapter.ViewHolder> {
public RecyclerViewAdapter(int layoutResId, @Nullable List<DataModel> data) {
super(layoutResId, data);
}
static class ViewHolder extends BaseViewHolder{
public TextView tv_title;
public TextView tv_text;
public ViewHolder(View view) {
super(view);
tv_title=view.findViewById(R.id.recycler_view_title);
tv_text=view.findViewById(R.id.recycler_view_text);
}
}
@Override
protected void convert(ViewHolder helper, DataModel item) {
helper.setText(R.id.recycler_view_title,item.title)
.setText(R.id.recycler_view_text,item.text)
.addOnClickListener(R.id.recycler_view_title)
.addOnClickListener(R.id.recycler_view_text)
.addOnLongClickListener(R.id.recycler_view_title)
.addOnLongClickListener(R.id.recycler_view_text);
}
}
2.然后在MainActivity中为Adapter添加点击响应事件即可:
private void setAdapterClickListener() {
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Toast.makeText(MainActivity.this, "点击了view" + position, Toast.LENGTH_SHORT).show();
}
});
adapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
Toast.makeText(MainActivity.this, "长按了view" + position, Toast.LENGTH_SHORT).show();
return true;
}
});
adapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
RecyclerViewAdapter.ViewHolder viewHolder = new RecyclerViewAdapter.ViewHolder(view);
Toast.makeText(MainActivity.this, "点击了" + ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
adapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() {
@Override
public boolean onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) {
Toast.makeText(MainActivity.this, "长按了" + ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
return true;
}
});
}
这样就可以实现关于item的点击、长按以及item内部控件的点击、长按的事件处理了。不过这里有个不太懂的地方就是:处理长按事件时返回的是一个boolean值,这个值有什么作用呢?
3.设置加载动画
这里我通过一个Spinner来放置加载动画的各种模式,通过点击选择可以改变加载动画的模式:
s_animainStyle.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
setAdapterAnimation(BaseQuickAdapter.ALPHAIN);
break;
case 1:
setAdapterAnimation(BaseQuickAdapter.SCALEIN);
break;
case 2:
setAdapterAnimation(BaseQuickAdapter.SLIDEIN_BOTTOM);
break;
case 3:
setAdapterAnimation(BaseQuickAdapter.SLIDEIN_LEFT);
break;
case 4:
setAdapterAnimation(BaseQuickAdapter.SLIDEIN_RIGHT);
break;
default:
setAdapterAnimation(BaseQuickAdapter.ALPHAIN);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
private void setAdapterAnimation(int animationStyle) {
if (animationStyle == 0)
adapter.openLoadAnimation();
else
adapter.openLoadAnimation(animationStyle);
}
这样就可以改变动画加载摸式了
效果如下:
后续会持续更新