java - Android - Real Time Chat App Using Firebase -


i'm building real time chat app based on firebase database problem each time apps call oncreat methods call displaychatmessages() method problem messages in db displayed on listview. question can app face problems when database become bigger ?? after monthes or years ?? mean handel alot of data @ start time

as solution i'm trying store old messages localy , load them later , app load new added childs ? dont know how start if it's idea can 1 me ?

my old displaychatmessages method : ideas new 1 ??

private void displaychatmessages() {      recyclerview recycler = (recyclerview)findviewbyid(r.id.myrv);     linearlayoutmanager layoutmang = new linearlayoutmanager(this);     layoutmang.setstackfromend(true);     recycler.setlayoutmanager(layoutmang);     madapter = new firebaserecycleradapter<chatmessage, recyclerview.viewholder>(             chatmessage.class, r.layout.activity_main, recyclerview.viewholder.class, firebasedatabase.getinstance().getreference()) {         @override         protected void populateviewholder(final recyclerview.viewholder viewholder, final chatmessage user,                                           final int position) {               int y=0;             chatmessage user2;             if (position>1){                 user2 = getitem(position - 1);             }else{                 user2 = getitem(position );             }              chatmessage ori2 = getitem(position );             if (user.getmessageuser().matches(firebaseauth.getinstance().getcurrentuser().getemail())) {                     if (user2.getmessagefull()<ori2.getmessagefull()){                     y=1;                     populatetype1((holderme) viewholder, user,  1);                 }else{                     populatetype1((holderme) viewholder, user, 0);                 }              }else if (!user.getmessageuser().matches(firebaseauth.getinstance().getcurrentuser().getemail())){                if (user2.getmessagefull()<ori2.getmessagefull()){                     populatetype2((holderyou) viewholder, user, 1,firebaseauth.getinstance().getcurrentuser().getemail());                 }else{                     populatetype2((holderyou) viewholder, user, 0,firebaseauth.getinstance().getcurrentuser().getemail());                 }              }             if(user.getmessagetime()< new date().gettime()) {                 holderdate vh3 = (holderdate) viewholder;                 populatetype3(vh3, user, position);             }         }              @override         public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) {             log.e("viewt",viewtype+"");             if (viewtype == 1) {                  view usertype1 = layoutinflater.from(parent.getcontext())                         .inflate(r.layout.layout_holder_me, parent, false);                 return new holderme(usertype1);             } else{                view usertype2 = layoutinflater.from(parent.getcontext())                         .inflate(r.layout.layout_holder_you, parent, false);                 return new holderyou(usertype2);             }          }          @override         public int getitemviewtype(int position) {               chatmessage user = getitem(position);             string s = firebaseauth.getinstance().getcurrentuser().getemail();             if (s.equals(user.getmessageuser())) {              return 1;             } else {                  return 2;             }          }          private void populatetype1(holderme v, chatmessage model, int position) {             v.gettimeview().settext(dateformat.format("hh:mm",model.getmessagetime()));             if (position==1) {                 v.getfulldateview().settext(dateformat.format("dd-mm-yyyy", model.getmessagetime()));                 v.getfulldateview().setvisibility(view.visible);             }                 v.gettextv().settext(model.getmessagetext());         }         private void populatetype3(holderdate vcv, chatmessage model, int position) {             vcv.getdate().settext(dateformat.format("dd-mm-yyyy",model.getmessagetime()));         }         private void toaa1( string text) {             toast.maketext(chatactivity.this,text,toast.length_long).show();         }         private void  populatetype2(holderyou vv, chatmessage model, int position,string username) {             vv.gettimeview().settext(dateformat.format("hh:mm",model.getmessagetime()));             if (position==1) {                 vv.getfulldateview().setvisibility(view.visible);                 vv.getfulldateview().settext(dateformat.format("dd-mm-yyyy", model.getmessagetime()));             }             vv.gettextv().settext(model.getmessagetext());            if (username.matches("test2@test2.com")) {                 vv.getimageview().setbackgroundresource(r.drawable.userm);             } else {                 vv.getimageview().setbackgroundresource(r.drawable.usera);                 }         }      };     recycler.setadapter(madapter); } 

showing messages in chat app indeed going cause problems number of messages grows. instead can use firebase database query show recent message. example:

databasereference messages = firebasedatabase.getinstance().getreference(); query recent = messages.orderbykey().limittolast(100); 

and use in adapter:

madapter = new firebaserecycleradapter<chatmessage, recyclerview.viewholder>(         chatmessage.class,          r.layout.activity_main,         recyclerview.viewholder.class,          recent) { 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -