注意:
TextView必须设置setClickable .. 等三个属性,不然不能Click,也不能获得焦点
也就无法通过xml文件改变获取焦点状态的背景图了
public View getView(int position, View view, ViewGroup parent) {
view = new TextView(context);
view.setClickable(true);
view.setFocusable(true);
view.setFocusableInTouchMode(true);
当单击item的时候 , view 会首先获取焦点。 此时如果对其设置单击事件, 该事件不会生效。 在获取焦点的状态下再次单击才会响应该事件
如果将 ... 设为false
view.setFocusable(false);
view.setFocusableInTouchMode(false);
则单击view 立马响应onclick事件
。 因为如果要实现单击事件需要。改为
private View currentView = null;// 当前获取焦点的ListItem
view.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(v != currentView){
if(hasFocus){
Alert.show(context, "正在加载数据"+position);
}
}
currentView = v;
}
});
需要注意的是 onFocusChange 方法会不停的执行, 即状态由 hasFocus == true --> hasFocus ==false
所以当同一个view的时候, 需要进行特殊处理
另外解析selector的时候, 将从上到下依次解析,遇到符合情况的item则立即返回,
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:drawable="@drawable/home_item_0_selected" />
<item android:state_focused="false"
android:drawable="@drawable/home_item_0" />
</selector>
http://blog.csdn.net/litton_van/article/details/6371868
http://www.devdiv.com/home.php?mod=space&uid=14682&do=blog&id=2851