手记

解决ListView中Item和Item中控件的关系

默认情况下,ListView中适配器为BaseAdapter为例,默认情况下Item点击之后没有任何效果,原因是在点击Item的时候获取的焦点是子控件,为了解决这问题只需要在Item的根布局写上 android:descendantFocusability=""

beforeDescendants:ViewGroup会优先与子控件获取焦点

afterDescendants:VIewGroup会在子控件不需要获取的焦点的时候获取焦点

blocksDescendants:ViewGroup会覆盖子控件而获取焦点

经过测试,当不设置或者设置为beforeDescendants或afterDescendants的时候,只需要将子控件的android:focusable="false"设置为false即可实现,更简便的方法就是设置blocksDescendants即可。

注: lv.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});

此事件在触屏手机上不适用,只有在硬键盘的模拟器上才能触发。(模拟器打开硬键盘的方法在.android/avd/iPhone.avd/config.ini配置文件将hw.dPad置为yes即可)

原文链接:http://www.apkbus.com/blog-523232-59358.html

0人推荐
随时随地看视频
慕课网APP