跑進類似的問題,我需要點擊空白處時關閉擴展列表元素。這是我如何解決它。
public class CustomListView extends ListView {
private OnNoItemClickListener mOnNoItemClickListener;
public interface OnNoItemClickListener {
void onNoItemClicked();
}
public CustomListView(Context context) {
super(context);
}
public CustomListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//check whether the touch hit any elements INCLUDING ListView footer
if(pointToPosition((int) (ev.getX() * ev.getXPrecision()),
(int) (ev.getY() * ev.getYPrecision())) == -1 && ev.getAction() == MotionEvent.ACTION_DOWN) {
if(mOnNoItemClickListener != null) {
mOnNoItemClickListener.onNoItemClicked();
}
}
return super.dispatchTouchEvent(ev);
}
public void setOnNoItemClickListener(OnNoItemClickListener listener) {
mOnNoItemClickListener = listener;
}
}
然後在你的XML文件,而不是常規的ListView使用CustomListView和實施OnNoItemClickListener您的活動/片段內,並調用mListView.setOnNoItemClickListener(本);在onCreate中啓用回調函數onNoItemClicked()。
請注意,如果您的ListView有頁眉或頁腳,那麼這些被認爲是列表元素和onNoItemClicked()將不會被調用。
FWIW效果很好,我提交的問題得到了'setOnClickListener()'限制解除,當你做一個良好的出發點:http://code.google.com/p/android/issues/detail?id=59559 – CommonsWare