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);
                                    }
                            }
                        }
                    }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM