<org.yczbj.ycrefreshviewlib.YCRefreshView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_progress="@layout/view_custom_loading_data"
app:layout_empty="@layout/view_custom_empty_data"
app:layout_error="@layout/view_custom_data_error"/>
复制代码
adapter = new PersonAdapter(this);
recyclerView.setAdapter(adapter);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
adapter.addAll(data);
复制代码
public class PersonAdapter extends RecyclerArrayAdapter<PersonData> {
public PersonAdapter(Context context) {
super(context);
}
@Override
public BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) {
return new PersonViewHolder(parent);
}
public class PersonViewHolder extends BaseViewHolder<PersonData> {
private ImageView iv_news_image;
PersonViewHolder(ViewGroup parent) {
super(parent, R.layout.item_news);
iv_news_image = getView(R.id.iv_news_image);
}
@Override
public void setData(final PersonData person){
}
}
}
复制代码
//设置刷新listener
recyclerView.setRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//刷新操做
}
});
//设置是否刷新
recyclerView.setRefreshing(false);
//设置刷新颜色
recyclerView.setRefreshingColorResources(R.color.colorAccent);
复制代码
//设置上拉加载更多时布局,以及监听事件
adapter.setMore(R.layout.view_more, new OnLoadMoreListener() {
@Override
public void onLoadMore() {
//能够作请求下一页操做
}
});
复制代码
adapter.setMore(R.layout.view_more2, new OnMoreListener() {
@Override
public void onMoreShow() {
//不作处理
}
@Override
public void onMoreClick() {
//点击触发加载下一页数据
}
});
复制代码
//设置上拉加载没有更多数据监听
adapter.setNoMore(R.layout.view_no_more, new OnNoMoreListener() {
@Override
public void onNoMoreShow() {
//上拉加载,没有更多数据展现,这个方法能够暂停或者中止加载数据
adapter.pauseMore();
}
@Override
public void onNoMoreClick() {
//这个方法是点击没有更多数据展现布局的操做,好比能够作吐司等等
Log.e("逗比","没有更多数据了");
}
});
//设置上拉加载更多异常监听数据监听
adapter.setError(R.layout.view_error, new OnErrorListener() {
@Override
public void onErrorShow() {
//上拉加载,加载更多数据异常展现,这个方法能够暂停或者中止加载数据
adapter.pauseMore();
}
@Override
public void onErrorClick() {
//这个方法是点击加载更多数据异常展现布局的操做,好比恢复加载更多等等
adapter.resumeMore();
}
});
复制代码
adapter.addHeader(new InterItemView() {
@Override
public View onCreateView(ViewGroup parent) {
View inflate = LayoutInflater.from(context).inflate(R.layout.header_view, null);
return inflate;
}
@Override
public void onBindView(View headerView) {
TextView tvTitle = headerView.findViewById(R.id.tvTitle);
}
});
复制代码
adapter.addHeader(new InterItemView() {
@Override
public View onCreateView(ViewGroup parent) {
RecyclerView recyclerView = new RecyclerView(parent.getContext()){
//为了避免打扰横向RecyclerView的滑动操做,能够这样处理
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
return true;
}
};
return recyclerView;
}
@Override
public void onBindView(View headerView) {
//这里的处理别忘了
((ViewGroup)headerView).requestDisallowInterceptTouchEvent(true);
}
});
复制代码
//添加全部数据
adapter.addAll(data);
//添加单挑数据
adapter.add(data);
复制代码
//插入指定索引数据,单个数据
adapter.insert(data, pos);
//插入指定索引数据,多个数据
adapter.insertAll(data, pos);
//刷新指定索引数据
adapter.update(data, pos);
//删除数据,指定数据
adapter.remove(data);
//删除数据,指定索引
adapter.remove(pos);
//清空全部数据
复制代码
public class PersonAdapter extends RecyclerArrayAdapter<PersonData> {
public PersonAdapter(Context context) {
super(context);
}
@Override
public BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) {
return new PersonViewHolder(parent);
}
public class PersonViewHolder extends BaseViewHolder<PersonData> {
private TextView tv_title;
private ImageView iv_news_image;
PersonViewHolder(ViewGroup parent) {
super(parent, R.layout.item_news);
iv_news_image = getView(R.id.iv_news_image);
tv_title = getView(R.id.tv_title);
//添加孩子的点击事件
addOnClickListener(R.id.iv_news_image);
addOnClickListener(R.id.tv_title);
}
@Override
public void setData(final PersonData person){
Log.i("ViewHolder","position"+getDataPosition());
tv_title.setText(person.getName());
}
}
}
复制代码
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(int position) {
if (adapter.getAllData().size()>position && position>=0){
//处理点击事件逻辑
}
}
});
复制代码
//添加孩子的点击事件,能够看3.5设置adapter
addOnClickListener(R.id.iv_news_image);
addOnClickListener(R.id.tv_title);
//设置孩子的点击事件
adapter.setOnItemChildClickListener(new OnItemChildClickListener() {
@Override
public void onItemChildClick(View view, int position) {
switch (view.getId()){
case R.id.iv_news_image:
Toast.makeText(HeaderFooterActivity.this,
"点击图片了",Toast.LENGTH_SHORT).show();
break;
case R.id.tv_title:
Toast.makeText(HeaderFooterActivity.this,
"点击标题",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
});
复制代码
<org.yczbj.ycrefreshviewlib.swipeMenu.YCSwipeMenu
android:orientation="horizontal">
<!--item内容-->
<RelativeLayout
</RelativeLayout>
<!-- 侧滑菜单 -->
<Button
android:id="@+id/btn_del"/>
<Button
android:id="@+id/btn_top"/>
</org.yczbj.ycrefreshviewlib.swipeMenu.YCSwipeMenu>
复制代码
private OnSwipeMenuListener listener;
public void setOnSwipeMenuListener(OnSwipeMenuListener listener) {
this.listener = listener;
}
复制代码
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_del:
if (null != listener) {
listener.toDelete(getAdapterPosition());
}
break;
case R.id.btn_top:
if (null != listener) {
listener.toTop(getAdapterPosition());
}
break;
}
}
};
btn_del.setOnClickListener(clickListener);
btn_top.setOnClickListener(clickListener);
复制代码
adapter.setOnSwipeMenuListener(new OnSwipeMenuListener() {
//删除功能
@Override
public void toDelete(int position) {
}
//置顶功能
@Override
public void toTop(int position) {
}
});
复制代码
mCallback = new DefaultItemTouchHelpCallback(new DefaultItemTouchHelpCallback
.OnItemTouchCallbackListener() {
@Override
public void onSwiped(int adapterPosition) {
// 滑动删除的时候,从数据库、数据源移除,并刷新UI
}
@Override
public boolean onMove(int srcPosition, int targetPosition) {
return false;
}
});
mCallback.setDragEnable(true);
mCallback.setSwipeEnable(true);
mCallback.setColor(this.getResources().getColor(R.color.colorAccent));
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(mCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
复制代码
<!--刷新控件 省略部分代码-->
<android.support.v4.widget.SwipeRefreshLayout>
<FrameLayout>
<!--RecyclerView控件-->
<android.support.v7.widget.RecyclerView/>
<!--加载数据为空时的布局-->
<FrameLayout/>
<!--正在加载数据中的布局-->
<FrameLayout/>
<!--加载错误时的布局:网络错误或者请求数据错误-->
<FrameLayout/>
</FrameLayout>
</android.support.v4.widget.SwipeRefreshLayout>
复制代码
//设置加载数据完毕状态
recyclerView.showRecycler();
//设置加载数据为空状态
recyclerView.showEmpty();
//设置加载错误状态
recyclerView.showError();
//设置加载数据中状态
recyclerView.showProgress();
复制代码
//设置空状态页面自定义布局
recyclerView.setEmptyView(R.layout.view_custom_empty_data);
recyclerView.setEmptyView(view);
//获取空页面自定义布局
View emptyView = recyclerView.getEmptyView();
//设置异常状态页面自定义布局
recyclerView.setErrorView(R.layout.view_custom_data_error);
recyclerView.setErrorView(view);
//设置加载loading状态页面自定义布局
recyclerView.setProgressView(R.layout.view_progress_loading);
recyclerView.setProgressView(view);
复制代码
//注意须要
LinearLayout ll_error_view = (LinearLayout) recyclerView.findViewById(R.id.ll_error_view);
ll_error_view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//好比,跳转到网络设置页面,或者再次刷新数据,或者其余操做等等
}
});
复制代码
//设置加载数据完毕状态
recyclerView.showRecycler();
//设置加载数据为空状态
recyclerView.showEmpty();
//设置加载错误状态
recyclerView.showError();
//设置加载数据中状态
recyclerView.showProgress();
//设置自定义布局,其余几个方法同理
recyclerView.setEmptyView(R.layout.view_custom_empty_data);
复制代码
//子类设置数据方法
setData方法
//findViewById方式
iv_news_image = getView(R.id.iv_news_image);
//获取上下文
Context context = getContext();
//获取数据索引的位置
int dataPosition = getDataPosition();
//添加item中子控件的点击事件
addOnClickListener(R.id.tv_title);
复制代码
//删除索引处的数据
adapter.remove(0);
//触发清空全部数据
adapter.removeAll();
//添加数据,注意这个是在最后索引处添加
adapter.add(new PersonData());
//添加全部数据
adapter.addAll(DataProvider.getPersonList(0));
//插入数据
adapter.insert(data,3);
//在某个索引处插入集合数据
adapter.insertAll(data,3);
//获取item索引位置
adapter.getPosition(data);
//触发清空全部的数据
adapter.clear();
//获取全部的数据
adapter.getAllData();
//清除全部footer
adapter.removeAllFooter();
//清除全部header
adapter.removeAllHeader();
//添加footerView
adapter.addFooter(view);
//添加headerView
adapter.addHeader(view);
//移除某个headerView
adapter.removeHeader(view);
//移除某个footerView
adapter.removeFooter(view);
//获取某个索引处的headerView
adapter.getHeader(0);
//获取某个索引处的footerView
adapter.getFooter(0);
//获取footer的数量
adapter.getFooterCount();
//获取header的数量
adapter.getHeaderCount();
//设置上拉加载更多的自定义布局和监听
adapter.setMore(R.layout.view_more,listener);
//设置上拉加载更多的自定义布局和监听
adapter.setMore(view,listener);
//设置上拉加载没有更多数据布局
adapter.setNoMore(R.layout.view_nomore);
//设置上拉加载没有更多数据布局
adapter.setNoMore(view);
//设置上拉加载没有更多数据监听
adapter.setNoMore(R.layout.view_nomore,listener);
//设置上拉加载异常的布局
adapter.setError(R.layout.view_error);
//设置上拉加载异常的布局
adapter.setError(view);
//设置上拉加载异常的布局和异常监听
adapter.setError(R.layout.view_error,listener);
//暂停上拉加载更多
adapter.pauseMore();
//中止上拉加载更多
adapter.stopMore();
//恢复上拉加载更多
adapter.resumeMore();
//获取上下文
adapter.getContext();
//应该使用这个获取item个数
adapter.getCount();
//设置操做数据[增删改查]后,是否刷新adapter
adapter.setNotifyOnChange(true);
//设置孩子点击事件
adapter.setOnItemChildClickListener(listener);
//设置条目点击事件
adapter.setOnItemClickListener(listener);
//设置条目长按事件
adapter.setOnItemLongClickListener(listener);
复制代码
//能够设置线条颜色和宽度的分割线
//四个参数,上下文,方向,线宽,颜色
final RecycleViewItemLine line = new RecycleViewItemLine(this, LinearLayout.HORIZONTAL,
(int)AppUtils.convertDpToPixel(1,this),
this.getResources().getColor(R.color.color_f9f9f9));
recyclerView.addItemDecoration(line);
//适用于瀑布流中的间距设置
SpaceViewItemLine itemDecoration = new SpaceViewItemLine(
(int) AppUtils.convertDpToPixel(8,this));
itemDecoration.setPaddingEdgeSide(true);
itemDecoration.setPaddingStart(true);
itemDecoration.setPaddingHeaderFooter(true);
recyclerView.addItemDecoration(itemDecoration);
//能够设置线条颜色和宽度,而且能够设置距离左右的间距
DividerViewItemLine itemDecoration = new
DividerViewItemLine( this.getResources().getColor(R.color.color_f9f9f9)
, LibUtils.dip2px(this, 1f),
LibUtils.dip2px(this, 72), 0);
itemDecoration.setDrawLastItem(false);
recyclerView.addItemDecoration(itemDecoration);
复制代码