zoukankan      html  css  js  c++  java
  • Android_bilibili式评论及回复的简单实现

    今天好像啥也没干,,,,打了挺久游戏,,可恶啊,它怎么这么好玩。。。

    昨天大致实现了商品的留言和回复,比较粗糙,重要的是思路。

    总体构思

    分为留言及回复两个板块,留言是对该商品的留言,回复是对留言及留言的回复的回复。点击留言按钮即可对该货物进行留言,点击留言可对留言进行回复,点击留言的回复即可对留言的回复进行回复。

    这里用两个receyleview实现,一个receyleview用于显示留言,留言又有一个receyleview用于显示其中的回复。

    数据库的设计思路

    将所有的评论回复都放在同一张数据表中,表的结构如下:

    其中包括:

    每一条信息自己的objectid;

    用于标识回复的abovecomment,这个属性用于存储回复的上级评论id,假如是直接回复的根评论则存放根评论的id,假如是回复的回复则存放那条回复的id;

    用于存储发送这条信息的用户名的username;

    用于存储评论/回复内容的saywhat;

    用于存放评论及回复所属商品的id的itemid;

     用于存放回复对象的用户名的tousername,这个属性是只有回复的回复才有的,用于实现这种效果:

     

     一个简陋的数据分类方案

    将数据表中关于某货物的留言信息全部查询出来,之后将留言及回复放入两个数组中,以下代码仅供参考,算法有待优化。

       //选出此商品的评论后筛选根评论和子回复,查询效率有待提升
                        ArrayList<ArrayList<SayToItemBean>> list_reply=new ArrayList<>();
                        ArrayList<SayToItemBean> list_coment=new ArrayList<>();
                        for (SayToItemBean bean:list){
                            if (bean.getAbovecomment()==null){
                                list_coment.add(bean);
                                list_reply.add(new ArrayList<SayToItemBean>());
                            }
                        }
                        //评论的回复,评论的回复无tousername有abovecomment
                        for (SayToItemBean bean:list){
                            if (bean.getAbovecomment()!=null){
                                for (int i=0;i<list_coment.size();i++){
                                  if (bean.getAbovecomment().equals(list_coment.get(i).getObjectId())){
                                        list_reply.get(i).add(bean);
                                    }
                                }
                            }
                        }
                        //评论回复的回复的回复,有abovecomment有tousername
                        for (SayToItemBean bean:list){
                            if (bean.getTousername()!=null){
                                for (int i=0;i<list_reply.size();i++){
                                    if (list_reply.get(i).size()>0)
                                        if (list_reply.get(i).get(0).getUsername().equals(bean.getTousername())){
                                                list_reply.get(i).add(bean);
                                        }
                                }
                            }
                        }
    

      

  • 相关阅读:
    疯狂学java的第七天
    疯狂学java的第六天
    疯狂学java的第五天
    学java的第四天
    学java的第三天
    javaSE_20_常用API(包装类丶BigInteger类丶BigDecimal类 )
    javaSE_19_常用API(String类丶StringBuffer类)
    javaSE_17_内部类丶常用的引用类型用法总结
    javaSE_15_package和import丶访问控制权限
    javaSE_14_抽象类丶接口
  • 原文地址:https://www.cnblogs.com/XiaoGao128/p/12507079.html
Copyright © 2011-2022 走看看