RecycleView多控件携带多个参数点击事件
来源:互联网 发布:mac默认英文字体 编辑:程序博客网 时间:2024/06/05 17:53
RecycleView多控件携带多个参数点击事件
ListView多控件点击与此类似
在res-values-string.xml里定义常量
<!--设置多个tag--><item name="position" type="id" /><item name="contact" type="id" />
定义回调接口
/** * 多个控件点击 * Created by wulsh on 2017/8/30. */public interface MultiWidgetClick { void onTextClick(int position, String content); void onButtonClick(int position, String content);}
Adapter
public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> implements View.OnClickListener { private ArrayList<Fruit> fruits; private MultiWidgetClick multiWidgetClick; public FruitAdapter(ArrayList<Fruit> fruits) { this.fruits = fruits; } public void setMultiWidgetClick(MultiWidgetClick multiWidgetClick) { this.multiWidgetClick = multiWidgetClick; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_recycle, parent, false); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { Fruit fruit = fruits.get(position); holder.txt_name.setText(fruit.getName()); holder.btn_age.setText(fruit.getAge()); holder.txt_name.setOnClickListener(this); holder.btn_age.setOnClickListener(this); holder.txt_name.setTag(R.id.position, position); holder.txt_name.setTag(R.id.contact, fruit.getName()); holder.btn_age.setTag(R.id.position, position); holder.btn_age.setTag(R.id.contact, fruit.getName()); } @Override public int getItemCount() { return fruits.size(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.txt_name: if (multiWidgetClick != null) { multiWidgetClick.onTextClick((int) v.getTag(R.id.position), (String) v.getTag(R.id.contact)); } break; case R.id.btn_age: if (multiWidgetClick != null) { multiWidgetClick.onButtonClick((int) v.getTag(R.id.position), (String) v.getTag(R.id.contact)); } break; } } static class ViewHolder extends RecyclerView.ViewHolder { TextView txt_name; Button btn_age; public ViewHolder(View itemView) { super(itemView); txt_name = (TextView) itemView.findViewById(R.id.txt_name); btn_age = (Button) itemView.findViewById(R.id.btn_age); } }}
Activity使用
LinearLayoutManager manager = new LinearLayoutManager(this); recycle_view.setLayoutManager(manager);adapter = new FruitAdapter(fruits); recycle_view.setAdapter(adapter);adapter.setMultiWidgetClick(new MultiWidgetClick() { @Override public void onTextClick(int position, String content) { //Log.d("CMCC", "点击了文字:" + position + ",content:" + content); Toast.makeText(MainActivity.this, "点击了文字:" + content, Toast.LENGTH_SHORT).show(); } @Override public void onButtonClick(int position, String content) { //Log.d("CMCC", "点击了按钮:" + position + ",content:" + content); Toast.makeText(MainActivity.this, "点击了按钮:" + position, Toast.LENGTH_SHORT).show(); } });
阅读全文
1 0
- RecycleView多控件携带多个参数点击事件
- Handler发送消息携带多个参数
- RecycleView适配器及多条目及点击事件
- <十>RecycleView点击事件
- RecycleView 点击事件
- Recycleview的点击事件
- RecycleView点击事件
- RecycleView的点击事件
- recycleview点击事件
- recycleview条目点击事件
- Recycleview点击事件
- Recycleview的点击事件
- Android databinding RecycleView item 子控件点击事件
- UGUI点击事件(多个)
- android appwidget 点击事件详解 多个控件多个按钮不同响应
- RecycleView的Item点击事件
- RecycleView 添加item点击事件
- RecycleView怎么添加点击事件
- java中HashMap的使用方法
- 天津武清区
- OpenLayers2 --- Feature Event
- keepalived+mycat+mysql框架搭建
- 系统启动流程(三)
- RecycleView多控件携带多个参数点击事件
- Semantic Segmentation using Fully Convolutional Networks over the years
- 文章标题
- java tcp 网络通信--使用多线程传输文件
- 状态码(Status Codes)W3英文解释
- Maven学习笔记 -- day04 Maven分模块开发
- 25个Spring面试题
- 允许mysql远程访问 及 如何修改密码
- C#基础-039 设计一个学生类Student和它的一个子类Undergraduate,并进行测试