adapter中加点击事件的一种写法

adapter中:

private AttendanceListClickListener listener;

public interface AttendanceListClickListener {
public void onRejectButtonClick(int position);
public void onAgreeButtonClick(int position);
}

public void setListener(AttendanceListClickListener listener ) {
this.listener = listener;
}

holder.attendance_reject_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
listener.onRejectButtonClick(index);
}
});
holder.attendance_agree_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
listener.onAgreeButtonClick(index);
}
});

使用adapter的activity中implements AttendanceListClickListener:

@Override
public void onRejectButtonClick(int position) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
String msg = TodoJSONParser.approveTodo(ToDoMainActivity.getOnclickItemTodoId(), 2,"");
System.out.println(msg);
finish();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}

@Override
public void onAgreeButtonClick(int position) {
Log.v("post", "OnAgreeButtonClickListener");
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
try {
String msg = TodoJSONParser.approveTodo(ToDoMainActivity.getOnclickItemTodoId(), 1,"");
System.out.println(msg);
finish();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}).start();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有可能是以下原因导致: 1. 没有为 adapter 设置点击事件监听器; 2. 点击事件监听器中的代码出现了错误; 3. 点击事件被其他 view 拦截了。 如果是第一种情况,你需要在 adapter 中设置点击事件监听器,代码类似如下: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<String> mData; private OnItemClickListener mListener; // 定义一个接口变量 // 定义一个接口,用于回调点击事件 public interface OnItemClickListener { void onItemClick(int position); } // 设置点击事件监听器 public void setOnItemClickListener(OnItemClickListener listener) { mListener = listener; } // 在 ViewHolder 中为 item 设置点击事件监听器 class MyViewHolder extends RecyclerView.ViewHolder { private TextView mTextView; public MyViewHolder(View itemView) { super(itemView); mTextView = itemView.findViewById(R.id.text_view); // item 点击事件监听器 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mListener != null) { mListener.onItemClick(getAdapterPosition()); } } }); } } // ... } ``` 然后在你的 Activity 或 Fragment 中,为 adapter 设置点击事件监听器: ```java MyAdapter adapter = new MyAdapter(data); adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { // 处理点击事件 } }); ``` 如果你已经设置了点击事件监听器,那么请检查一下监听器中的代码是否出现了错误。 如果以上两种情况都不是问题,那么有可能是点击事件被其他 view 拦截了。你可以尝试在 adapter item 的根布局中设置 `android:clickable="true"` 和 `android:focusable="true"` 属性,让点击事件能够被正确地传递到该 item 上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值