listview 在不改变数据源的情况下 刷新adapter 的解决办法

来源:互联网 发布:缺血半暗带的算法 编辑:程序博客网 时间:2024/05/29 08:10

声明:

本人是在  集成环信的群聊功能后,监听收到消息在不改变Adapter的情况下  刷新群组列表,使群组列表中单个群组的item上面显示 小红点

效果图如下


代码如下:

msgListener = new EMMessageListener() {    @Override    public void onMessageReceived(List<EMMessage> messages) {        //收到消息        LogUtils.e(mContext,"onMessageReceived","触发了");        listView.smoothScrollBy(1,0);        groupAdapter.notifyDataSetChanged();    }    @Override    public void onCmdMessageReceived(List<EMMessage> messages) {        //收到透传消息    }    @Override    public void onMessageReadAckReceived(List<EMMessage> messages) {        //收到已读回执    }    @Override    public void onMessageDeliveryAckReceived(List<EMMessage> message) {        //收到已送达回执    }    @Override    public void onMessageChanged(EMMessage message, Object change) {        //消息状态变动    }};EMClient.getInstance().chatManager().addMessageListener(msgListener);

遇到的情况是:  如果不滑动listview      就不会刷新适配器  (就算是设置数据源也没用,因为我这里的数据源不需要改变)

解决: 在监听中  让listview 移动  然后刷新适配器(为了让移动的效果不明显  所以移动的距离设置为了1 ,时长设置为了0)


已解决所遇到的问题    以上解决方法  仅供大家参考   (这种做法有点简单粗暴,但是目前没有找到 也没有想到更好的解决办法)

1 0