<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);
複製代碼