RecylerView滑动,拖拽
2016-09-06 11:07
162 查看
适配器/*** 适配器.*/public class RecyclerviewAdapter extends RecyclerView.Adapter<RecyclerviewAdapter.ItmeViewHolder> implements RecyclerView_interface{public List<RecyclerView_itme> list;public Context context;public RecyclerviewAdapter(List<RecyclerView_itme> list, Context context) {this.list = list;this.context = context;}/*** 创建ItmeViewHolder* @param parent* @param viewType* @return*/@Overridepublic ItmeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.itme_recyclerview, parent, false);return new ItmeViewHolder(view);}/*** 绑定ItmeViewHolder* @param holder* @param position*/@Overridepublic void onBindViewHolder(ItmeViewHolder holder, int position) {RecyclerView_itme recyclerView_itme = list.get(position);holder.tv_recyclerview.setBackgroundColor(Color.parseColor(recyclerView_itme.getColor()));holder.tv_recyclerview.setText(recyclerView_itme.getName());}/*** 数量* @return*/@Overridepublic int getItemCount() {return list.size();}/*** 上下拖拽* @param fromposition* @param toposition* @return*/@Overridepublic boolean onMove(int fromposition, int toposition) {Collections.swap(list,fromposition,toposition);//java里面的一个集合位置对换notifyItemMoved(fromposition, toposition);//recycler.adapter里面专门用来上下位置对换return true;}/*** 侧滑* @param position*/@Overridepublic void onSwiped(int position) {list.remove(position);notifyItemRemoved(position);//recycler.adapter里面专门用来侧滑}/*** ItmeViewHolder 属性初始化*/public class ItmeViewHolder extends RecyclerView.ViewHolder {public TextView tv_recyclerview;public ItmeViewHolder(View itemView) {super(itemView);tv_recyclerview = (TextView) itemView.findViewById(R.id.tv_recyclerview);}}}重写ItemTouchHelper.Callback/*** 重写.ItemTouchHelper.Callbac*/public class RecyclerView_Callck extends ItemTouchHelper.Callback {private RecyclerviewAdapter recyclerviewAdapter;/*** 决定是否滑动,拖拽* @param recyclerView* @param viewHolder* @return*/@Overridepublic int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {int move = ItemTouchHelper.UP | ItemTouchHelper.DOWN;//这个是 上下拖拽,可以设置1个方向,也可以是2个int swiped = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;//这个是 左右滑动,可以设置1个方向,也可以是2个return makeMovementFlags(move, swiped);}/*** 赋值* @param recyclerviewAdapter*/public RecyclerView_Callck(RecyclerviewAdapter recyclerviewAdapter) {this.recyclerviewAdapter = recyclerviewAdapter;}/*** 拖拽处理* @param recyclerView* @param viewHolder* @param target* @return*/@Overridepublic boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {recyclerviewAdapter.onMove(viewHolder.getAdapterPosition(),target.getAdapterPosition());//接口回调return true;}@Overridepublic void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {recyclerviewAdapter.onSwiped(viewHolder.getAdapterPosition());//接口回调}/*** 是否支持左右滑动* @return*/@Overridepublic boolean isItemViewSwipeEnabled() {return true;}/*** 是否支持长按拖拽* @return*/@Overridepublic boolean isLongPressDragEnabled() {return true;}}接口/*** 接口,作用于适配器跟ItemTouchHelper.Callback 通信*/public interface RecyclerView_interface {boolean onMove(int fromposition, int toposition);//上下拖拽void onSwiped(int position);//侧滑}实现/*** Created by Reimu on 2016/9/5.*/public class MainActivity extends Activity {private RecyclerView recyclerView;private List<RecyclerView_itme> list = new ArrayList<>();private String[] strings = {"#FFF68F", "#FFC1C1", "#F5F5F5", "#FF7F50", "#FF6A6A", "#FFF68F", "#FFC1C1", "#F5F5F5", "#FF7F50", "#FF6A6A"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.recyclerview_main);recyclerView = (RecyclerView) findViewById(R.id.recyclerview);for (int i = 0; i < 10; i++) {RecyclerView_itme recyclerView_itme = new RecyclerView_itme();recyclerView_itme.setColor(strings[i]);recyclerView_itme.setName(i + "");list.add(recyclerView_itme);}RecyclerviewAdapter recyclerviewAdapter = new RecyclerviewAdapter(list,this);//得到适配器recyclerView.setAdapter(recyclerviewAdapter);//设置适配器ItemTouchHelper.Callback callback = new RecyclerView_Callck(recyclerviewAdapter);//得到重写ItemTouchHelper.CallbackItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback);//设置callbackrecyclerView.setLayoutManager(new LinearLayoutManager(this));//这个一定要加,这是相当于一个容器,可以设定线性布局,Grid布局,瀑布流布局,默认是线性布局垂直itemTouchHelper.attachToRecyclerView(recyclerView);//给recyclerview 添加itemTouchHelper// observable.subscribe(subscriber);}
相关文章推荐
- Android学习之ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- Android学习之ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- Android学习之ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- RecyclerView 实现滑动删除和拖拽功能
- 使用RecyclerView实现ListView,GridView的效果(上下,左右滑动),拖拽与滑动删除
- RecyclerView 实现滑动删除和拖拽功能
- android RecyclerView实现条目Item拖拽排序与滑动删除
- RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载
- RecyclerView完美实现拖拽,滑动删除,撤销删除
- [绍棠] iOS UITableView 的坑:isDragging 属性无效, tableView是拖拽还是自由滑动区分
- 打造最强RecyclerView,Item侧滑菜单,长按拖拽Item,滑动删除Item
- RecyclerView学习--item实现拖拽和滑动删除
- RecyclerView实现滑动和拖拽功能(带小例子)
- RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载
- RecylerViewd的Item高度自适应,Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- Android RecyclerView通用Adapter及item拖拽、滑动删除
- Android LRecyclerView实现Item侧滑菜单、长按拖拽Item、滑动删除Item等功能
- 使用ItemTouchHelper轻松实现RecyclerView拖拽排序和滑动删除
- Android中RecyclerView实现滑动删除与拖拽功能