Android 滑动监听RecyclerView线性流+左右划删除+上下移动

废话不多说了,直接给大家贴代码了。具体代码如下所示:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="c.example.jreduch10.Recycler1Activity"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/rv" ></android.support.v7.widget.RecyclerView> </RelativeLayout> <span style="font-size:18px;">package c.example.jreduch10; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; import c.example.jreduch10.entity.Video; import jp.wasabeef.recyclerview.adapters.AlphaInAnimationAdapter; import jp.wasabeef.recyclerview.adapters.ScaleInAnimationAdapter; public class Recycler1Activity extends AppCompatActivity { private RecyclerView rv; private List<Video> list; private Adapter adapter; private ItemTouchHelper itemTouchHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycler1); rv=(RecyclerView)findViewById(R.id.rv); list=new ArrayList<>(); initData(); adapter=new Adapter(list); LinearLayoutManager llm=new LinearLayoutManager(this); llm.setOrientation(LinearLayoutManager.VERTICAL); rv.setLayoutManager(llm); // rv.setAdapter(adapter); //动画效果 AlphaInAnimationAdapter alphaInAnimationAdapter=new AlphaInAnimationAdapter(adapter); rv.setAdapter(new ScaleInAnimationAdapter(alphaInAnimationAdapter)); //默认动画效果 // rv.setItemAnimator(new DefaultItemAnimator()); itemTouchHelper=createItemTouchHelper(); itemTouchHelper.attachToRecyclerView(rv); ////监听事件某一行 // RecyclerViewItemListener listener=new RecyclerViewItemListener(this, new RecyclerViewItemListener.OnItemClickListener() { // @Override // public void OnItemClick(View item, int adapterPosition) { // Toast.makeText(getBaseContext(),adapterPosition+"",Toast.LENGTH_SHORT).show(); // } // }); // rv.addOnItemTouchListener(listener); } public ItemTouchHelper createItemTouchHelper(){ itemTouchHelper=new ItemTouchHelper(new ItemTouchHelper.Callback() { @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { //拖拽时支持的方向向上向下 int dragFlags=ItemTouchHelper.UP|itemTouchHelper.DOWN; //滑动的时候支持的方向为左右 int swipeFlags=ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT; //必须调用makeMovementFlags()方法通知 TouchHelper支持的种类 return makeMovementFlags(dragFlags,swipeFlags); } //上下拖动回调次方法。 @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { adapter.move(viewHolder.getAdapterPosition(),target.getAdapterPosition()); return true; } //左右滑动回调此方法。 @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { adapter.delete(viewHolder.getAdapterPosition()); } @Override public boolean isItemViewSwipeEnabled() { return super.isItemViewSwipeEnabled(); } @Override public boolean isLongPressDragEnabled() { return super.isLongPressDragEnabled(); } }); return itemTouchHelper; } public void initData(){ Video video=new Video(R.mipmap.zyf,"国产","........"); list.add(video); video=new Video(R.mipmap.zyfzyf,"国产","........"); list.add(video); video=new Video(R.mipmap.zyfzyfzyf,"国产","........"); list.add(video); video=new Video(R.mipmap.zyf,"国产","........"); list.add(video); video=new Video(R.mipmap.g,"国产","........"); list.add(video); video=new Video(R.mipmap.ic_launcher,"国产","........"); list.add(video); video=new Video(R.mipmap.zyf,"国产","........"); list.add(video); video=new Video(R.mipmap.zyf,"国产","........"); list.add(video); video=new Video(R.mipmap.zyfzyf,"国产","........"); list.add(video); video=new Video(R.mipmap.zyfzyfzyf,"国产","........"); list.add(video); video=new Video(R.mipmap.zyf,"国产","........"); list.add(video); video=new Video(R.mipmap.g,"国产","........"); list.add(video); video=new Video(R.mipmap.ic_launcher,"国产","........"); list.add(video); video=new Video(R.mipmap.zyf,"国产","........"); list.add(video); } public class Adapter extends RecyclerView.Adapter<ViewHolder>{ private List<Video> mData; public Adapter(List<Video> mData){ this.mData=mData; } //左右滑动时调用此方法 public void delete(int position){ mData.remove(position); notifyItemRemoved(position); } //上下拖动时调用此方法 public void move(int from,int to){ Video video=mData.remove(from); mData.add(to>from?to-1:to,video); notifyItemMoved(from,to); } @Override public int getItemCount() { return mData.size(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=getLayoutInflater().inflate(R.layout.recycle1_linear_layout,parent,false); ViewHolder vh=new ViewHolder(view); return vh; } @Override public void onBindViewHolder(ViewHolder holder, int position) { Video video=mData.get(position); holder.iv.setImageResource(video.getImg()); holder.title.setText(video.getTitle()); holder.content.setText(video.getContent()); } } public class ViewHolder extends RecyclerView.ViewHolder{ ImageView iv; TextView title; TextView content; public ViewHolder(View itemView) { super(itemView); iv= (ImageView) itemView.findViewById(R.id.iv); title=(TextView)itemView.findViewById(R.id.title); content=(TextView)itemView.findViewById(R.id.content); //监听事件某一项 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int position=getAdapterPosition(); Log.d("9999999999","uuuuu"); Toast.makeText(getBaseContext(),title.getText()+":"+position,Toast.LENGTH_SHORT).show(); } }); } } } </span>

以上所述是小编给大家介绍的Android 滑动监听RecyclerView线性流+左右划删除+上下移动,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-21 03:33:07

Android 滑动监听RecyclerView线性流+左右划删除+上下移动的相关文章

Android 滑动监听RecyclerView线性流+左右划删除+上下移动_Android

废话不多说了,直接给大家贴代码了.具体代码如下所示: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wid

横向滑动-Android中用首字母排序的listview中的item的滑动监听与listview的上下滑动冲突

问题描述 Android中用首字母排序的listview中的item的滑动监听与listview的上下滑动冲突 大神帮看看,我现在listview的item中我写了一个OnTouchListener,但是发现横向滑动的时候老是会触发listview的上下滑动事件,导致横向滑动很难滑出来,但是滑出来第一次后,后面就很容易划出来了!大神帮忙看看!!!感谢! 让人很是苦恼,这个该怎么处理呢?查过资料说改返回值为false,改了都滑不出来! /** * 侧滑显示删除按钮 */ private View.

listview-关于Android ListView滑动监听

问题描述 关于Android ListView滑动监听 我想问一个关于ListView的问题,就是setItemSelectedListener无法触发怎么处理,点击事件和长按事件都能触发,有那个好心人帮忙一下,给下setItemSelectedListener部分的代码,我主要是想对listView滑动到了哪里做一个监听 解决方案 能把你的代码发过来吗?有时间我可以看一下 解决方案二: 无法触发报错吗?没报错的话,是不是API版本的问题. 解决方案三: 是 listview 的item 布局的

Android开发之ScrollView的滑动监听_Android

我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部.可惜的是SDK并没有相应的方法,不过倒是提供了一个 protected void onScrollChanged(int l, int t, int oldl, int oldt) 显然这个方法是不能被外界调用的,因此就需要把它暴露出去,解决方式就是写一个接口 /** * Created by 刘楠 on 2016/8/21 0021.17:24 */ public interface ScrollViewL

Android ListView监听滑动事件的方法(详解)

ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监听事件,可以在监听三个Action事件发生时通过MotionEvent的getX()方法或getY()方法获取到当前触摸的坐标值,来对用户的滑动方向进行判断,并可在不同的Action状态中做出相应的处理 mListView.setOnTouchListener(new View.OnTouchLis

android如何监听点击的是哪个快捷方式

问题描述 android如何监听点击的是哪个快捷方式 android 如何监听点击的是哪个快捷方式,我现在要创建一个空的快捷方式,然后在点击的时候开启一个服务,求帮忙 解决方案 Android 四种点击监听方式Android 快捷方式android studio 快捷方式 解决方案二: 你问题表达的不够清楚 解决方案三: 你问的是什么哦!是添加快速监听器的方快捷键吗?android studio

游戏-求大神解答,关于Android屏幕监听的问题

问题描述 求大神解答,关于Android屏幕监听的问题 1C 最近在学Android开发,打算做一个游戏,但有一个效果不知道如何实现(如图),当点击屏幕时方块上升松开时方块下降. 之前用java是监听按钮,有按下和松开两个函数,当按下时flag=1,松开时flag=2,然后根据flag在draw()画不同的状态.再在run()改坐标.实现动画. 现在Android用OnTouchListener监听SurfaceView没有松开屏幕的方法,不知道怎么搞了,求大神指导. 解决方案 有关Androi

android获取监听SD Card状态的方法

    android获取监听SD Card状态的方法 本文实例讲述了android获取监听SD Card状态的方法.分享给大家供大家参考.具体分析如下: 1. 注册StorageEventListener来监听SD卡状态即onStorageStateChanged()方法,当sd卡状态改变时,调用该方法. 复制代码 代码如下: public void onStorageStateChanged(String path,String oldState,String newState){ if (

android计算器监听事件

问题描述 android计算器监听事件 case R.id.btndeng: Check check = new Check(); double result = check.Dao(buf); String strEdit = Double.toString(result); edit1.setText(strEdit); buf.delete(0, buf.length()); buf.append(edit1.getText()); edit1.setSelection(buf.lengt