• 设置ListView显示到最后一行


      上次聊天的那个界面上用的一个TextView,然后每次消息都用text.append("消息内容"+" ")函数来在text字符串后边接一段,然后重新显示这个内容。

      现在需要美化界面,将消息内容放到一个ListView里边,每个消息是一个Item,然后进行显示,效果图如图所示:

      那么问题来了,我每次有新的消息的时候,都会排列在上一个Item的下方,即使到了最底下,最新的消息也会沉到最下边,显示不出来,需要手动滑动屏幕来显示最新消息,显然是不符合实际要求的。于是想了一个办法,让他每次都显示ListView的最后一个Item,我是看的别人的CSDN博客(这里附上Ta的博客链接http://blog.csdn.net/snow12342234/article/details/49794507),这里直接照搬过来,然后供自己以后学习参考:

      

      其实listView元素直接在xml里就可以简单定义实现好这个效果,附带实现的方法三个。
     
      方法1:直接在layout里对listView的属性定义
        StackFromBottom: true
        Transcript Mode: alwayScroll
     
      方法2: 把上面的方法改为java代码的方式声明
        listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
        listView.setStackFromBottom(true);
     
      方法3: 变通的做法 把焦点focus去listView的最后一个item,那自然就是显示最底部
        每次适配器 adapter.notifyDataSetChanged() 之后要记得调用,略麻烦
        注意要用 post的方法确保listview的数据已经加载完毕
    private void scrollMyListViewToBottom() {
        listView.post(new Runnable() {
            @Override
            public void run() {
                // Select the last row so it will scroll into view...
                listView.setSelection(listAdapter.getCount() - 1);
            }
        });
    }

      好了,这三种方法我没有全部尝试,只是用了第二种,直接设置ListView,然后看效果就变成了这样:

      程序还在完善中,回头还会再来补充......

  • 相关阅读:
    指令到底是什么?机器码又是什么?
    汇编基础最后一篇--机器语言指令
    剑指OFFER----面试题34. 二叉树中和为某一值的路径
    剑指OFFER----面试题33. 二叉搜索树的后序遍历序列
    剑指OFFER----面试题32
    剑指OFFER----面试题31. 栈的压入、弹出序列
    剑指OFFER----面试题30. 包含min函数的栈
    剑指OFFER----面试题29. 顺时针打印矩阵
    剑指OFFER----面试题28. 对称的二叉树
    剑指OFFER----面试题27. 二叉树的镜像
  • 原文地址:https://www.cnblogs.com/cnyulei/p/6853111.html
Copyright © 2020-2023  润新知