安卓 Recycleview的点击事件
来源:互联网 发布:美工废物利用教案 编辑:程序博客网 时间:2024/06/04 17:50
在为RecycleView设置点击事件时,发现RecycleView没有像ListView那样有setOnItemClickListener的方法,需要自己来实现。在这里我们选择了在绑定数据以后对itemview进行监听,有hoder就可以拿到view了通过这个方法holder.itemView;
View view=holder.itemView; view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,list.get(position).getSongname(),Toast.LENGTH_LONG).show(); manager.cutmusic(list.get(position).getUrl()); if(listen!=null) { listen.onitemclick(v, position); } } });
二.但是在适配器里面设置监听不太合适,所以我们最好还是在fragment来写监听,所以第二种方法我们写了一个回调:回调有三个条件1.两个类2.有主仆关系3.不确定操作。
首先在fragment中只需要传递一个接口,同时在辅类需要定义一个接口,接口里面有一个方法,和一个方法。
public interface Onitemlisten{ void onitemclick(View view, int position);}Onitemlisten listen;public void SetOnItemclick(Onitemlisten listen){ this.listen=listen;}2.在什么时候触发呢?我选择子条目被点击以后触发它。
View view=holder.itemView; view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,list.get(position).getSongname(),Toast.LENGTH_LONG).show(); manager.cutmusic(list.get(position).getUrl()); if(listen!=null) { listen.onitemclick(v, position); } } });3,在fragemnt中的代码,在这里接收通知。
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.layout_0, container, false); mrycleview=view.findViewById(R.id.Retorylistview); rec=new recycleadapter(); activty= (PlayerActivity) getActivity(); Log.e("msg","44444444444444444444444"); rec.SetOnItemclick(new recycleadapter.Onitemlisten() { @Override public void onitemclick(View view, int position) { Toast.makeText(view.getContext(), list1.get(position).getUrl()+"", Toast.LENGTH_SHORT).show(); activty.setpaly(); } }); mrycleview.setAdapter(rec); query(); click(); return view; }
4.点谁删谁。如何做呢?在适配器中再写一个方法delete,因为数据就是,同时记住刷新数据,添加动画默认的
// mrycleview.setItemAnimator(new DefaultItemAnimator());
public void delete(int position){ list.remove(position);
//添加一个移除动画
notifyItemRemoved(position);
//刷新数据 notifyDataSetChanged()
}
//第二个方法完整的代码
@Override
public void onBindViewHolder(RecyclerView.ViewHolder fatherholder, final int position){ Log.e("msg","111111111111111111"); if(fatherholder instanceof ViewHolder) { Log.e("msg","88888888888888888888888888888888888"); ViewHolder holder=(ViewHolder)fatherholder; holder.tv1.setText(list.get(position).getSongname()); holder.tv2.setText(list.get(position).getSingername()); Picasso.with(context) .load(list.get(position).getAlbumpic_big()) .error(R.mipmap.ic_launcher) .placeholder(R.drawable.dibu8) .into(holder.IV); View view=holder.itemView; view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,list.get(position).getSongname(),Toast.LENGTH_LONG).show(); manager.cutmusic(list.get(position).getUrl()); if(listen!=null) { listen.onitemclick(v, position); } } });}if(fatherholder instanceof ViewHolder2) { ViewHolder2 holder=(ViewHolder2)fatherholder; Picasso.with(context) .load(list.get(position).getAlbumpic_big()) .error(R.mipmap.ic_launcher) .placeholder(R.drawable.dibu8) .into(holder.IV1); Log.e("msg","9999999999999999999999999999999999999"); } Log.e("msg","22222222222222222222");}
阅读全文
0 0
- 安卓 Recycleview的点击事件
- Recycleview的点击事件
- RecycleView的点击事件
- Recycleview的点击事件
- xamarin学习笔记A06(安卓RecycleView点击事件)
- RecycleView的Item点击事件
- 安卓的点击事件
- RecycleView的不同类型Item点击事件
- RecycleView如何实现item的点击事件
- Android-RecycleView的item点击事件
- RecycleView 列表的item点击事件
- RecycleView条目点击事件的实现方法
- recycleview的点击,长按事件
- <十>RecycleView点击事件
- RecycleView 点击事件
- RecycleView点击事件
- recycleview点击事件
- recycleview条目点击事件
- c 位运算
- Eclipse常用快捷键大全
- 朝花夕拾之机房收费系统
- 【angular】指令及数据绑定入门
- 信安实践1:ubuntu16.04安装apache2,php5.6,mysql……
- 安卓 Recycleview的点击事件
- 数据结构,头插法和尾插法的关键代码
- java 第二章 基本数据类型与数组
- Linux安装JDK详细步骤
- 模式分类与应用-贝叶斯垃圾邮件分类
- 角谷猜想(C++递归实现)
- Unity时光倒流效果实现
- c和c++区别(一)——默认值、inline、cosnt和引用
- TensorFlow 人脸识别网络与对抗网络搭建