RecycleView多控件携带多个参数点击事件

xiaoxiao2021-02-28  88

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(); } });
转载请注明原文地址: https://www.6miu.com/read-64435.html

最新回复(0)