我有一个ListView
。那个ListView
有项目。这些项目有子项目(例如,按钮)。
为此,我使用适配器的子类,因此getView()
内部实现了Adaptor
。我希望在ListView
所在的活动中以某种方式接收该子项目的点击事件。希望我的问题得到很好的解释。
哪种方法最好?
答案 0 :(得分:4)
哪种方法最好?
我认为没有最佳方法。实现所需内容的一种简单而干净的方法是为子项事件实现通用侦听器,并通过接口传递(由Activity
实现):
public interface OnButtonEventListener {
void onSubButtonClicked(int parentRowPosition);
}
您的活动将实施此界面。
然后在适配器中构建一个通用侦听器:
private OnButtonEventListener mBtnListener; // as you'll pass a Context to your adapter, the Activity which implements the OnButtonEventListener
private void OnClickListener mListener = new OnClickListener() {
@Override
public void onClick(View v) {
Integer rowPosition = (Integer) v.getTag();// you could pass other data as well
mBtnListener.onButtonClicked(rowPosition);
}
}
然后在适配器的getView方法中:
//...
Button b = ...find the Button
b.setTag(Integer.valueOf(position));
b.setOnClickListener(mListener);
//
如果您决定稍后这样做,使用此方法也可以轻松地将事件广播添加到其他子项的活动中。