您的位置:首页 > 其它

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);}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RecyclerView 滑动 拖拽
相关文章推荐