刚刚进入公司参加工作,遇到关于listview的坑,记录一下,也希望能帮助到遇到同样困难的朋友
1.点击listview子项没有任何反应
我在fragment里面放置一个listview,listview子布局里面有一个checkbox控件,然后设置监听事件setOnItemClickListener,结果发现没有任何反应,在网上搜索之后才知道如果listview子布局里面有类似checkbox、imagebutton之类的控件,这类控件会抢先获得焦点,因此需要在子布局里面的根布局设置一个属性 android:descendantFocusability="blocksDescendants"
这个属性值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
2.item的点击事件与item里面的checkbox的点击事件分开
需求是做一个统计,每点击一次就会+1,结果我发现只要点击的区域是checkbox的区域,不会+1,不是checkbox的区域才会+1
这样只需要在checkbox控件上设置clickable=false即可
3.这个不是与listview相关的,不过都是一个进程下来的,所以也记录一下
fragment与该fragment绑定的activity之间的数据传递
首先,在fragment里面进行fragment->activity的页面跳转,跳转方法与activity之间的跳转一样,因为需要返回值,所以采用startActivityForResult方法进行跳转,起初我是在fragment里面重写onActivityResult方法来获取返回值,结果发现根本没有进入到fragment里面的这个方法,于是猜想是不是在与该fragment绑定的activity的onActivityResult方法,试了一下,果然是这样,然后问题就来了,我该怎么在fragment里面获取到这个值 - - 百度了一下,看到有人说在activity里面提供get方法,试了一下,成功了,因此记录一下 具体方法:在activity里面为该变量(全局变量)提供get方法(类似javabean实体类的get属性),在fragment里面通过getActivity获取到对象,再强制转换成与fragment绑定的activity类型,这下就可以调用get方法获取到值了!