关于android listview 如何控制文字颜色
我在做一个聊天软件,想如果是对方发来的消息就是灰色的(历史记录中的不算),自己发的就是黑色的,但每次颜色都是一起变,实在弄不明白了,还要请教各位啊,谢谢!需要解决的就是仅...
我在做一个聊天软件,想如果是对方发来的消息就是灰色的(历史记录中的不算),自己发的就是黑色的,但每次颜色都是一起变,实在弄不明白了,还要请教各位啊,谢谢!需要解决的就是仅仅把一行变成灰色。
这是适配器的代码的一部分,有两个构造方法,用来区分是添加历史记录的还是聊天的,buju2中就是一个TextView,from就是发送者,to是接受者,listItemView.title中listItemView是一个内部类,不碍的。 展开
这是适配器的代码的一部分,有两个构造方法,用来区分是添加历史记录的还是聊天的,buju2中就是一个TextView,from就是发送者,to是接受者,listItemView.title中listItemView是一个内部类,不碍的。 展开
2个回答
展开全部
如果这个from是全局变量的话,我感觉这种写法会有问题,先判断一下吧。
在else if(from.equals(to)里加个日志输出,比如
Log.d("MyAdapter","from equals to")
然后你发几条消息,之后在用对方发条消息,看看Log打印了几次,如果不止一次,那我大概就知道问题的所在了。
因为从逻辑上推断,用notifyDataSetChanged()方法刷新列表的时候,肯定要重载所有Item,会多次调用getView方法生成每条记录的界面,而不是一条记录。就是说在你列表变化时,所有记录都是根据此时from的值来生成的,所以才会出现这种结果
在else if(from.equals(to)里加个日志输出,比如
Log.d("MyAdapter","from equals to")
然后你发几条消息,之后在用对方发条消息,看看Log打印了几次,如果不止一次,那我大概就知道问题的所在了。
因为从逻辑上推断,用notifyDataSetChanged()方法刷新列表的时候,肯定要重载所有Item,会多次调用getView方法生成每条记录的界面,而不是一条记录。就是说在你列表变化时,所有记录都是根据此时from的值来生成的,所以才会出现这种结果
追问
的确不只一次,我并没有用notifyDataSetChanged()来刷新,因为并不是很理解,用了几次效果不理想,刷新都是用setAdapter,如何才能不重复加载。
追答
我所能想到的实现方式,是抛开ListView,定义一个LinearLayout代替,然后用addView的方式动态添加。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询