1.当使用硬按钮和手指点击同时操作listView的时候,焦点的问题会让人很纠结,如果想做好与用户的交互就更不容易了,
这个是因为Android在touch模式的时候不涉及到焦点的概念,尽管相应的方法来设置这个模式也有焦点(setFocusIntouchMode),
但是在时间的开发中还是不能很好的满足很多要求
2.写几点开发适配listView焦点的心得吧
2.1首先是要先写好ListView条目view的Selector,这个很重要,然后还要在XML定义ListView的地方写号Androd:ListSelector
2.2要监听ListView的OnClickListener和OnItemSelectListener事件,在事件中将当前选中或点击的position记录下来,通过
适配器中的setpositon方法,将这个position传递给listviewadapter,然后要在getview方法中判断当前postion和传递进来的
positon是否相等做background的设置
3.要执行getview方法就要在OnClickListener和OnItemSelectListener监听事件中调用adapter的notifydatasetchanged方法
4.在Activity的onResume方法中模拟一次向下的键值事件,这个是因为点击listview条目后再返回listview焦点失去了,你再按
向下键就是要两次才有效,第一次是捕获焦点
Runtime runtime=Runtime.getRuntime();
runtime.exec("input keyevent " + 20);
4.模拟键值:adb shell input keyevent "int键值"
5.凌乱原创参考DEMO: https://github.com/lycasa/ListViewTest
这个是因为Android在touch模式的时候不涉及到焦点的概念,尽管相应的方法来设置这个模式也有焦点(setFocusIntouchMode),
但是在时间的开发中还是不能很好的满足很多要求
2.写几点开发适配listView焦点的心得吧
2.1首先是要先写好ListView条目view的Selector,这个很重要,然后还要在XML定义ListView的地方写号Androd:ListSelector
2.2要监听ListView的OnClickListener和OnItemSelectListener事件,在事件中将当前选中或点击的position记录下来,通过
适配器中的setpositon方法,将这个position传递给listviewadapter,然后要在getview方法中判断当前postion和传递进来的
positon是否相等做background的设置
3.要执行getview方法就要在OnClickListener和OnItemSelectListener监听事件中调用adapter的notifydatasetchanged方法
4.在Activity的onResume方法中模拟一次向下的键值事件,这个是因为点击listview条目后再返回listview焦点失去了,你再按
向下键就是要两次才有效,第一次是捕获焦点
Runtime runtime=Runtime.getRuntime();
runtime.exec("input keyevent " + 20);
4.模拟键值:adb shell input keyevent "int键值"
5.凌乱原创参考DEMO: https://github.com/lycasa/ListViewTest