android - How to create View with xml layout programmatically inside fragment? -


i have layout , need create many views add tham gridlayout inside fragment.

i have now:

arraylist<tables> tables;             arraylist<view> tablelist = new arraylist<>();             tables = parsedarray.get(0).gettables();             gridlayout gridlayout = (gridlayout) getview().findviewbyid(r.id.grid_layout);              (int = 0; < tables.size(); i++) {                 tablelist.add(getview().findviewbyid(r.id.table_layout));                 //textview textview = (textview) tablelist.get(i).findviewbyid(r.id.table_number);                 //textview.settext(tables.get(i).gettablenumber());                 gridlayout.spec row = gridlayout.spec(i / 5);                 gridlayout.spec col = gridlayout.spec(i);                 gridlayout.layoutparams params = new gridlayout.layoutparams(row, col);                 gridlayout.addview(tablelist.get(i), i, params);             }         } 

but wrong way, need find out how create new views , add them list, in state think im tring make reference same view, couz have type of error:

cannot add null child view viewgroup  

fragment code:

public static class tablesfragment extends fragment {      private volleysinglton volleysinglton;     private requestqueue requestqueue;      public static tablesfragment getinstance(int position) {         tablesfragment mytablesfragment = new tablesfragment();         bundle args = new bundle();         args.putint("position", position);         mytablesfragment.setarguments(args);         return mytablesfragment;     }       @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {           view layout = inflater.inflate(r.layout.fragment_1, container, false);         gridlayout gridlayout = (gridlayout) layout.findviewbyid(r.id.grid_layout);          volleysinglton = volleysinglton.returninstance();         requestqueue = volleysinglton.getrequestqueue();         jsonobjectrequest jsonobjectrequest = new jsonobjectrequest(request.method.get,                 url,                 (string) null,                 new response.listener<jsonobject>() {                      @override                     public void onresponse(jsonobject response) {                          arraylist<roomsclass> parsedarray = parseroomsresponse(response);                         updateviews(parsedarray);                     }                 }, new response.errorlistener() {             @override             public void onerrorresponse(volleyerror error) {                 if (error instanceof timeouterror) {                  }             }         });          requestqueue.add(jsonobjectrequest);          return layout;     }      private void updateviews(arraylist<roomsclass> parsedarray) {          // extract relevant data array          if (parsedarray == null || parsedarray.isempty()) {         } else {              arraylist<tables> tables;             arraylist<view> tablelist = new arraylist<>();             tables = parsedarray.get(0).gettables();             gridlayout gridlayout = (gridlayout) getview().findviewbyid(r.id.grid_layout);              (int = 0; < tables.size(); i++) {                 tablelist.add(getview().findviewbyid(r.id.table_layout));                 //textview textview = (textview) tablelist.get(i).findviewbyid(r.id.table_number);                 //textview.settext(tables.get(i).gettablenumber());                 gridlayout.spec row = gridlayout.spec(i / 5);                 gridlayout.spec col = gridlayout.spec(i);                 gridlayout.layoutparams params = new gridlayout.layoutparams(row, col);                 gridlayout.addview(tablelist.get(i), i, params);             }         }          // replace place holders in relevant views      }      @override     public void onviewcreated(view view, bundle savedinstancestate) {         super.onviewcreated(view, savedinstancestate);      }       @override     public void onresume() {         super.onresume();      }      public interface volleycallback {         void onsuccess(arraylist<roomsclass> result);     }      private arraylist<roomsclass> parseroomsresponse(jsonobject response) {          arraylist<roomsclass> roomsarray = new arraylist<>();         try {              jsonarray rooms = response.getjsonarray("rooms");              (int = 0; < rooms.length(); i++) {                 jsonobject currentroom = rooms.getjsonobject(i);                 roomsclass room = new roomsclass();                 room.setroomid(currentroom.getint("room_id"));                 room.setroomlabel(currentroom.getstring("label"));                  jsonarray tables = currentroom.getjsonarray("tables");                 (int j = 0; j < tables.length(); j++) {                     jsonobject currenttable = tables.getjsonobject(j);                     room.addtable(currenttable.getint("table_id"), currenttable.getint("table_number"));                 }                 roomsarray.add(room);             }         } catch (jsonexception e) {             toast.maketext(getactivity(), e.tostring(), toast.length_long).show();         }          return roomsarray;     } } 

there may more issues cuz i'm editing right now.

i make chaneges:

view view = getactivity().getlayoutinflater().inflate(r.layout.table_layout, gridlayout, false);                 tablelist.add(view); 

and when im trying add views thing go ok.

p.s. dont close question yet, couz there mb troubles.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -