BaseAdapter Android中的委托事件
当我们使用BaseAdapter时,有必要创建另一个调用该类(MyBaseAdapter)的类(ClassA)。如果BaseAdapter中要充气的视图上包含按钮和另一个调度事件的控件,如何将这些事件委托给ClassABaseAdapter Android中的委托事件,android,baseadapter,Android,Baseadapter,当我们使用BaseAdapter时,有必要创建另一个调用该类(MyBaseAdapter)的类(ClassA)。如果BaseAdapter中要充气的视图上包含按钮和另一个调度事件的控件,如何将这些事件委托给ClassA 我正在使用按钮,但将来我将添加EditText和其他控件,但我不想在BaseAdapter类中管理这些事件。很难理解您的问题,但我会尝试回答您的问题 不,您不必处理扩展BaseAdapter的类中的事件。您始终可以对保存适配器的片段或活动进行回调 因此,在适配器中: privat
我正在使用按钮,但将来我将添加EditText和其他控件,但我不想在BaseAdapter类中管理这些事件。很难理解您的问题,但我会尝试回答您的问题 不,您不必处理扩展BaseAdapter的类中的事件。您始终可以对保存适配器的片段或活动进行回调 因此,在适配器中:
private OnButtonSelectedListener mListener;
public interface OnButtonSelectedListener {
void onButtonSelected();
}
public void setListener (OnButtonSelectedListener listener) {
mListener = listener;
}
//然后,单击按钮时,调用:
mListener.onButtonSelected();
//在你的活动或片段中
//确保类实现OnButtonSelectedListener
//然后添加未实现的方法
//无论何时实例化适配器,都要设置侦听器
coolAdapter = new CoolAdapter(mContext, listOfCoolStuff);
coolAdapter.setListener(this);
//然后在ButtonSelectedListener上填写您的方法,以处理您想要执行的任何操作
private void onButtonSelected() {
//handle your event here!
}
如果您有任何问题或我只是没有正确理解您的问题,请告诉我。祝你好运 将适配器用作侦听器:
public class MyAdapter extends BaseAdapter implements OnClickListener{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// if you are in fragment
View v = getActivity().getLayoutInflater().inflate(R.layout.layout_settings_cell, null);
Button btn = v.findViewById(R.id.button1);
btn.setOnClickListener(this);
btn.setTag(Integer.valueOf(position));
return v;
}
@Override
public void onClick(View v) {
int pos = (Integer) v.getTag();
// your code
}
}
只需膨胀您的自定义列表项布局
所有按钮都将具有相同的id,但您可以将位置参数放入标记中,以了解按下的确切按钮
将此适配器设置为类A的内部类,该类具有一些可以从适配器激活的方法。只会使活动实现您的侦听器,并在适配器注册中作为您的类的侦听器
ActivityA implements OnClickListener {
}
YourAdapter extends BaseAdapter {
YourAdapter(Context ctx,....)
// Context is your activity
}
为BaseAdapter充气的XML包含2个按钮(请参阅,我想在实例BaseAdapter的类中管理OnClickListener,而在扩展BaseAdapter的类中则不需要。明白我的意思吗?我需要更多的代码和示例,因为我不明白你在说什么。很抱歉,我确实想帮你!很简单,查看其他响应。声明方法“public void onClick(View v){”在同一个类(扩展BaseAdapter的MyAdapter)中,但我想在另一个类中创建相同的方法,该类的哪个实例是MyAdapter。您现在明白我的意思了吗?您在同一个类中管理click事件,我想在该实例MyAdapter的类中管理这些事件,明白吗?
button.setOnClickListener((ActivityA) ctx);