android textview 长文本 界面卡顿怎么解决啊?

DavidWu 发布于 2013/05/03 11:26
阅读 3K+
收藏 0

我有一个界面ListView里面每个item都是TextView,里面塞了很多长文本,大约5 6百个文字吧。Listview大约有8~10个这样的item。

在模拟器和s3上测试,滚动listview时候发现界面比较卡顿。有好的解决思路吗?

加载中
0
北京d路飞
北京d路飞

对单个item,将内容截断在内存里暂存一个索引表,textview直接使用内存表里读取内容;
对大量item,可以分页刷新。(8-10个貌似不多啊,是不是有其它地方卡顿了。。)

0
DavidWu
DavidWu

我用的是List<Map<String,Object>> 这种形式传到Adapter里面去,

Object 也就是一堆字符串,是从数据库中拉出来的。结果会比较卡,但是如果直接将Object 写死的话,界面就不卡了。

这个究竟是为什么?

0
只求一醉
你是在getView里面做的数据库读取么?如果是就会卡了。
黑狗
黑狗
+1 跟我想的一样 你只需要优化你的getView方法就OK
0
DavidWu
DavidWu

当然不是啦。

List<Map<String,Object>> 是用静态的,预先把数据加载进去的。

0
开源中国隔壁老王
开源中国隔壁老王
你是异步加载的么?
0
DavidWu
DavidWu
不是的,一次性加载的。不过在我的G8 手机上看起来要好一点。为什么S3就很卡顿。屏幕小的关系?
0
adgkns
adgkns

如果是直接在UI线程中加载,由于访问数据库相对比较耗时,就会导致UI有点卡顿。可以像

云麟 回答于 2013-05-03 17:50
你是异步加载的么?
说的采用异步加载的方式。

0
发粪涂墙
发粪涂墙

我也碰到过这种情况,不过已经解决了,说下我的情况:

刚开始以为是数据库查询耗时,后来经过测试发现不是数据库的原因,几经测试后发现是UI问题导致的,最终锁定到TextView,我的界面上有几十个TextView,后来我自己写了一个类,继承了View,自己实现了TextView的功能就不卡了

0
DavidWu
DavidWu

引用来自“发粪涂墙”的答案

我也碰到过这种情况,不过已经解决了,说下我的情况:

刚开始以为是数据库查询耗时,后来经过测试发现不是数据库的原因,几经测试后发现是UI问题导致的,最终锁定到TextView,我的界面上有几十个TextView,后来我自己写了一个类,继承了View,自己实现了TextView的功能就不卡了

我的情况应该和你差不多。

具体是怎么做的,请指教。谢谢

0
DavidWu
DavidWu

引用来自“夏日晚风”的答案

如果是直接在UI线程中加载,由于访问数据库相对比较耗时,就会导致UI有点卡顿。可以像

云麟 回答于 2013-05-03 17:50
你是异步加载的么?
说的采用异步加载的方式。

这个其实不是异步不异步,本身字符串不算多,而且我也确保提前把数据提出来了。
返回顶部
顶部