我有一个自定义 ListView ,其中有一个按钮作为一个项目。
我想为这个按钮设置监听器。目前我在适配器中使用以下代码来识别它。
holder.editDetails.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//rowItem.getUserID();
Toast.makeText(getContext(), "Done", Toast.LENGTH_SHORT).show();
}
});
有没有办法在适配器外部识别这个按钮的 onclick 事件。(在 Main.class 中)像
listView.setOnItemClickListener(new OnItemClickListener() {
});
抱歉我的英语不好
最佳答案
您可以为此创建一个接口(interface)。将您的界面传递给您的适配器,并在您单击按钮时调用它。
public interface onDoneClick{
void onClick(View v, int position);
}
在此接口(interface)中,我们将传递适配器和 View 上的位置。
接下来将接口(interface)添加到您的适配器的构造函数,并将其保存在一个字段中。例如:
public MyAdapter(Context context, int textViewResourceId, List<MyObject> objects,onDoneClick listener ) {
super(context, textViewResourceId, objects);
mListener = listener;
}
现在我们有了我们的监听器,只需在您的 holder.editDetails 点击监听器上调用它:
@Override
public void onClick(View v) {
mListener.onClick(v,position);//where position is the position in the adapter
}
接下来在您的 activity 上,当您创建适配器时,只需将监听器传递给它:
new MyAdapter(this, 0, myobjectList, new onDoneClick() {
@Override
public void onClick(View v, int position) {
//whatever you want to do.
}
});
关于Android 如何识别来自外部适配器的 Listview 按钮单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26524855/