ListView默認情況
當item有焦點時,item上的button等子控件獲取不到焦點;
當子控件有焦點時,item無焦點無法響應onItemClick事件
ViewGroup.FOCUS_AFTER_DESCENDANTS:表示item的子控件優先於item獲得焦點;
ViewGroup.FOCUS_BEFORE_DESCENDANTS:表示item優先於其子控件獲得焦點。
解決辦法:
listView.setOnItemSelectedListener(onItemSelectedListener);
private AdapterView.OnItemSelectedListener onItemSelectedListener =
new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
//當此選中的item的子控件需要獲得焦點時
parent.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
//else parent.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
parent.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
}
}