package com.dl7.recycler.helper; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.support.v7.widget.helper.ItemTouchHelper; import com.dl7.recycler.adapter.BaseQuickAdapter; import com.dl7.recycler.divider.DividerGridItemDecoration; import com.dl7.recycler.divider.DividerItemDecoration; import com.dl7.recycler.listener.OnRequestDataListener; /** * Created by long on 2016/3/30. * 视图帮助类 */ public class RecyclerViewHelper { private RecyclerViewHelper() { throw new RuntimeException("RecyclerViewHelper cannot be initialized!"); } /** * 配置垂直列表RecyclerView * @param view */ public static void initRecyclerViewV(Context context, RecyclerView view, boolean isDivided, RecyclerView.Adapter adapter) { LinearLayoutManager layoutManager = new LinearLayoutManager(context); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); // view.setHasFixedSize(true); view.setLayoutManager(layoutManager); view.setItemAnimator(new DefaultItemAnimator()); if (isDivided) { view.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL_LIST)); } view.setAdapter(adapter); } public static void initRecyclerViewV(Context context, RecyclerView view, RecyclerView.Adapter adapter) { initRecyclerViewV(context, view, false, adapter); } public static void initRecyclerViewV(Context context, RecyclerView view, boolean isDivided, BaseQuickAdapter adapter, OnRequestDataListener listener) { initRecyclerViewV(context, view, isDivided, adapter); adapter.setRequestDataListener(listener); } public static void initRecyclerViewV(Context context, RecyclerView view, BaseQuickAdapter adapter, OnRequestDataListener listener) { initRecyclerViewV(context, view, false, adapter, listener); } /** * 配置水平列表RecyclerView * @param view */ public static void initRecyclerViewH(Context context, RecyclerView view, boolean isDivided, RecyclerView.Adapter adapter) { LinearLayoutManager layoutManager = new LinearLayoutManager(context); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); view.setLayoutManager(layoutManager); view.setItemAnimator(new DefaultItemAnimator()); if (isDivided) { view.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.HORIZONTAL_LIST)); } view.setAdapter(adapter); } public static void initRecyclerViewH(Context context, RecyclerView view, RecyclerView.Adapter adapter) { initRecyclerViewH(context, view, false, adapter); } /** * 配置网格列表RecyclerView * @param view */ public static void initRecyclerViewG(Context context, RecyclerView view, boolean isDivided, RecyclerView.Adapter adapter, int column) { GridLayoutManager layoutManager = new GridLayoutManager(context, column, LinearLayoutManager.VERTICAL, false); view.setLayoutManager(layoutManager); view.setItemAnimator(new DefaultItemAnimator()); if (isDivided) { view.addItemDecoration(new DividerGridItemDecoration(context)); } view.setAdapter(adapter); } public static void initRecyclerViewG(Context context, RecyclerView view, RecyclerView.Adapter adapter, int column) { initRecyclerViewG(context, view, false, adapter, column); } /** * 配置瀑布流列表RecyclerView * @param view */ public static void initRecyclerViewSV(Context context, RecyclerView view, boolean isDivided, RecyclerView.Adapter adapter, int column) { StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(column, StaggeredGridLayoutManager.VERTICAL); view.setLayoutManager(layoutManager); view.setItemAnimator(new DefaultItemAnimator()); if (isDivided) { view.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL_LIST)); } view.setAdapter(adapter); } public static void initRecyclerViewSV(Context context, RecyclerView view, RecyclerView.Adapter adapter, int column) { initRecyclerViewSV(context, view, false, adapter, column); } /** * 启动拖拽和滑动 * @param view 视图 * @param adapter 适配器 */ public static void startDragAndSwipe(RecyclerView view, BaseQuickAdapter adapter) { SimpleItemTouchHelperCallback callback = new SimpleItemTouchHelperCallback(adapter); final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback); itemTouchHelper.attachToRecyclerView(view); adapter.setDragStartListener(new OnStartDragListener() { @Override public void onStartDrag(RecyclerView.ViewHolder viewHolder) { itemTouchHelper.startDrag(viewHolder); } }); adapter.setDragCallback(callback); adapter.setDragColor(Color.LTGRAY); } /** * 启动拖拽和滑动 * @param view 视图 * @param adapter 适配器 * @param dragFixCount 固定数量 */ public static void startDragAndSwipe(RecyclerView view, BaseQuickAdapter adapter, int dragFixCount) { startDragAndSwipe(view, adapter); adapter.setDragFixCount(dragFixCount); } /** * 启动拖拽和滑动 * @param view 视图 * @param adapter 适配器 * @param dragFixCount 固定数量 * @param fixColor 固定背景色 */ public static void startDragAndSwipe(RecyclerView view, BaseQuickAdapter adapter, int dragFixCount, int fixColor) { startDragAndSwipe(view, adapter, dragFixCount); adapter.setDragFixDrawable(fixColor); } /** * 启动拖拽和滑动 * @param view 视图 * @param adapter 适配器 * @param dragFixCount 固定数量 * @param fixDrawable 固定背景色 */ public static void startDragAndSwipe(RecyclerView view, BaseQuickAdapter adapter, int dragFixCount, Drawable fixDrawable) { startDragAndSwipe(view, adapter, dragFixCount); adapter.setDragFixDrawable(fixDrawable); } }