weixin_51705636 2023-02-12 23:13 采纳率: 50%
浏览 41
已结题

Android Studio如何实现消息列表的自动刷新

使用Android Studio实现通讯功能

在设计消息列表的时候,出现一个问题,不知道如何修改好。
一般的消息列表都会包含与当前用户的最新一条聊天记录。
消息列表使用recycleview显示,想使用handler+adapter.notifyDataSetChanged来实现刷新最新的一条聊天记录,但是一直不成功!

    Handler HANDLER=new Handler((Message msg) -> {
        switch (msg.what){
            case 1:
                friendAdapter.notifyDataSetChanged(); 
                if(refreshlayouttop!=null)
                    refreshlayouttop.finishRefresh(0);//停止刷新动画
                if(refreshlayoutbootom!=null)
                    refreshlayoutbootom.finishLoadMore(0);//停止刷新动画
                break;
            default:;
        }
        return true;
    });
    private void loadFrined(boolean clear){
        new Thread(()->{
            List<Integer> FIdList = new ArrayList<>();
            FIdList = Http_friendList.fetch(UserDataUtils.getUserid()); //获取当前用户的F_id
            List<Friend> tempFriends = new ArrayList<>(); //记录当前用户每一个好友的信息(type frindid remake
            if(FIdList!=null&&FIdList.size()>0){
                for(int i=0;i<FIdList.size();i++){
                    System.out.println("fetche user frined "+FIdList.get(i));
                    if(checkExist(FIdList.get(i))==false) {
                        Friend friend = loadingFriend(FIdList.get(i)); //获取该好友的数据
                        if (friend != null) tempFriends.add(friend);
                    }
                }
            }
            for(Friend friend:tempFriends){
                friendlistData.add(friend);
            }
            Message message = new Message();
            message.what=1;
            HANDLER.sendMessage(message);
        }).start();
    }

我主要想知道如何修改原有的数据源(friendlistData列表中某一个项的信息,如最新的一条消息记录),可以使得页面自动刷新,显示新的数据。

网上信息真的太少了!不一定要用notifyDataSetChanged实现,但我是刚开始学的,也不知道还有什么方法了!谢谢大家!

  • 写回答

2条回答 默认 最新

  • 阳光宅男xxb 2023-02-13 08:18
    关注

    您这里只调用了刷新的方法,没有把新的消息传递到你的recycleview里面去,你可以在friendAdapter中写一个方法,用于更新数据用的,然后在handler中调用friendAdapter的那个更新数据的方法把msg传进去,然后在friendAdapter中奖新的msg加载到指定的地方。最后调用刷新

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月12日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分