声明: 本博文作为个人的学习笔记,如果有想法我会继续更新,欢迎大家斧正,共同进步。
本博文来自于笔者查找各种资料集合起来的笔记,很多内容原文已不可考,如有侵权,请联系在下。 @http://blog.csdn.net/tt_man 1、给TextView添加下划线其实很简单,只需要在布局文件中设置一个属性: style="?android:attr/listSeparatorTextViewStyle" 其实上述属性其实也适用于LinearLayout等等
2、Listview不刷新的问题
使用Listview的时候: 当要动态显示更改后的数据(例如数据库改动), 很多人应该都用过notifyDataSetChanged();这个方法来刷新Listview,显示改后的数据.
这时候就要注意了:<span style="white-space:pre"> </span><pre name="code" class="java"> <span style="white-space:pre"> </span>private ArrayList<HashMap<String, Object>> usersList; ...... usersList= query(......); //根据查询函数获取一个ArrayList并赋值给绑定到Adapter的数据源usersList sAdapter.notifyDataSetChanged(); ......
<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;"> 如果你也是: 上面这种形式去刷新ListView的数据的话, 是不可以更新的. 必须改成如下形式: </span>
<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;"></span><pre name="code" class="java"> <span style="white-space:pre"> </span> ...... //usersList= query(......); usersList.clear(); usersList.addAll(query(......)); sAdapter.notifyDataSetChanged();
<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;">原因是: sAdapter会通过usersList获取List中的内容。但是实际上可能(也应该)是,在调用super(MyActivity.this, R.layout.item, usersList)时sAdapter保存了usersList指向原List(假设为List a)的引用,在调用query函数之后,usersList指向了一个新的List(List b)。但是在调用notifyDataSetChanged()时,sAdapter会跟据保存的引用(即指向List a的引用)去更新,因此当然还是原来的结果,不会进行更新。 </span>