java - android recycler view and rotation -


im problem , need recycler view,

so have recycler view: enter image description here

but when rotate device, recycler never comes back.. thing is, im calling async task on oncreate method, if rotate device, oncreate method called again, , repopulate recycler view, in case, thats not happening. how can fix this?

when rotate device result: enter image description here

this activity code:

import android.os.asynctask; import android.os.bundle; import android.os.strictmode; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.defaultitemanimator; import android.support.v7.widget.linearlayoutmanager; import android.support.v7.widget.recyclerview;;  /**  * created ivomi on 15/01/2016.  */ public class mainfeed extends appcompatactivity {      private getdata getdata = new getdata();     private recyclerview recyclerview;     private linearlayoutmanager linearlayoutmanager;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.main_feed);          strictmode.threadpolicy policy = new strictmode.threadpolicy.builder().permitall().build();         strictmode.setthreadpolicy(policy);          recyclerview = (recyclerview) findviewbyid(r.id.rvfeed);         recyclerview.sethasfixedsize(false);         recyclerview.setitemanimator(new defaultitemanimator());          linearlayoutmanager = new linearlayoutmanager(mainfeed.this);         recyclerview.setlayoutmanager(linearlayoutmanager);          new fetchfeed().execute();      }        class fetchfeed extends asynctask<void, void, void> {           @override         protected void onpreexecute() {           }          @override         protected void doinbackground(void... params) {             getdata.getposts("http://**.**.***.***:81/chefebook/feed.php");             return null;         }          @override         protected void onpostexecute(void result) {             feedrecycleradapter feedrecycleradapter = new feedrecycleradapter(mainfeed.this, getdata.resultlist, "http://**.***.***.***:81/chefebook/feedimages/");             recyclerview.setadapter(feedrecycleradapter);         }      }   } 

this adapter code:

import android.content.context; import android.support.v7.widget.recyclerview; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview;  import com.squareup.picasso.picasso;  import java.util.list;  /**  * created ivomi on 15/01/2016.  */ public class feedrecycleradapter extends recyclerview.adapter<feedrecycleradapter.viewholder> {      private list<feedposts> resultfeedpost;     private layoutinflater context;     private string imagefolder;      /* constructor */     public feedrecycleradapter(context context, list<feedposts> resultfeedpost, string imagefolder) {          this.context = layoutinflater.from(context);         this.resultfeedpost = resultfeedpost;         this.imagefolder = imagefolder;      }       @override     public feedrecycleradapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) {          view v = context.inflate(r.layout.main_feed_item, null);         return new viewholder(v);      }      @override     public void onbindviewholder(feedrecycleradapter.viewholder holder, int position) {           feedposts feedposts = resultfeedpost.get(position);          holder.rvtitle.settext(feedposts.gettitle());         holder.rvlikes.settext(feedposts.getlikes() + " likes");         picasso.with(holder.rvimage.getcontext()).load(imagefolder + feedposts.getimage()).fit().centercrop().into(holder.rvimage);        }      @override     public int getitemcount() {         return resultfeedpost == null ? 0 : resultfeedpost.size();     }      public class viewholder extends recyclerview.viewholder {          imageview rvimage;         textview rvtitle;         textview rvlikes;          public viewholder(view itemview) {             super(itemview);              rvimage = (imageview) itemview.findviewbyid(r.id.feedimage);             rvtitle = (textview) itemview.findviewbyid(r.id.feedtitle);             rvlikes = (textview) itemview.findviewbyid(r.id.feedlikes);          }      }   } 

and class helps me store data inside list

import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject;  import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.unsupportedencodingexception; import java.net.malformedurlexception; import java.net.url; import java.util.arraylist; import java.util.list;   /**  * created ivomi on 15/01/2016.  */ public class getdata {       list<feedposts> resultlist = new arraylist<>();     private feedposts feedposts;      /* constructor */     public getdata() {      }      public void getposts(string murl) {           stringbuilder postsresult = new stringbuilder();          try {              url url = new url(murl);             inputstreamreader inputstreamreader = new inputstreamreader(url.openstream(), "utf-8");             bufferedreader bufferedreader = new bufferedreader(inputstreamreader);              string line;             while ((line = bufferedreader.readline()) != null) {                 postsresult.append(line);             }           } catch (malformedurlexception e) {             e.printstacktrace();         } catch (unsupportedencodingexception e) {             e.printstacktrace();         } catch (ioexception e) {             e.printstacktrace();         }          jsonread(postsresult.tostring());      }      public void jsonread(string postsresults) {          try {              jsonobject jsonobject = new jsonobject(postsresults);             jsonarray jsonarray = jsonobject.getjsonarray("posts");              (int = 0; < jsonarray.length(); i++) {                  jsonobject jsonobject1 = jsonarray.getjsonobject(i);                  feedposts = new feedposts();                 feedposts.settitle(jsonobject1.getstring("title"));                 feedposts.setimage(jsonobject1.getstring("image"));                 feedposts.setlikes(jsonobject1.getstring("likes"));                 resultlist.add(feedposts);              }          } catch (jsonexception e) {             e.printstacktrace();         }      }   } 

this json result:(its not related question belogs so..)

{    "posts":[       {          "id":"1",          "author":"the guy",          "title":"teste",          "image":"1.jpg",          "likes":"100"       },       {          "id":"2",          "author":"asfas",          "title":"dfsadfsad",          "image":"2.jpg",          "likes":"20"       },       {          "id":"3",          "author":"ivo",          "title":"fsdfsdafdsf",          "image":"3.jpg",          "likes":"15"       },       {          "id":"4",          "author":"fsd",          "title":"fsdafdsf",          "image":"4.jpg",          "likes":"5"       }    ] } 

im getting error, when onbindviewholder called:

01-16 20:46:42.243 4500-4500/****.chefebook d/bind view holder: called 01-16 20:46:42.256 4500-4500/****..chefebook d/viewgroup: addinarray been called, = android.support.v7.widget.recyclerview{2ad8a20 vfed.... .f....id 0,0-960,502 #7f0d005b app:id/rvfeed}call stack = 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup: java.lang.throwable: addinarray 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.addinarray(viewgroup.java:3786) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.addviewinner(viewgroup.java:3740) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.addview(viewgroup.java:3564) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.addview(viewgroup.java:3509) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.recyclerview$4.addview(recyclerview.java:544) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.childhelper.addview(childhelper.java:107) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.recyclerview$layoutmanager.addviewint(recyclerview.java:6314) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.recyclerview$layoutmanager.addview(recyclerview.java:6272) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.recyclerview$layoutmanager.addview(recyclerview.java:6260) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.linearlayoutmanager.layoutchunk(linearlayoutmanager.java:1385) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.linearlayoutmanager.fill(linearlayoutmanager.java:1334) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.linearlayoutmanager.onlayoutchildren(linearlayoutmanager.java:563) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.recyclerview.dispatchlayout(recyclerview.java:2847) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.support.v7.widget.recyclerview.onlayout(recyclerview.java:3145) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.view.layout(view.java:15141) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.layout(viewgroup.java:4862) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.relativelayout.onlayout(relativelayout.java:1160) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.view.layout(view.java:15141) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.layout(viewgroup.java:4862) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.framelayout.layoutchildren(framelayout.java:515) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.framelayout.onlayout(framelayout.java:450) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.view.layout(view.java:15141) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.layout(viewgroup.java:4862) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.linearlayout.setchildframe(linearlayout.java:1888) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.linearlayout.layoutvertical(linearlayout.java:1742) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.linearlayout.onlayout(linearlayout.java:1651) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.view.layout(view.java:15141) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.layout(viewgroup.java:4862) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.framelayout.layoutchildren(framelayout.java:515) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.framelayout.onlayout(framelayout.java:450) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.view.layout(view.java:15141) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.layout(viewgroup.java:4862) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.linearlayout.setchildframe(linearlayout.java:1888) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.linearlayout.layoutvertical(linearlayout.java:1742) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.linearlayout.onlayout(linearlayout.java:1651) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.view.layout(view.java:15141) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.layout(viewgroup.java:4862) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.framelayout.layoutchildren(framelayout.java:515) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.widget.framelayout.onlayout(framelayout.java:450) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.view.layout(view.java:15141) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewgroup.layout(viewgroup.java:4862) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewrootimpl.performlayout(viewrootimpl.java:2323) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:2029) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:1192) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:6231) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.choreographer$callbackrecord.run(choreographer.java:788) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.choreographer.docallbacks(choreographer.java:591) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.choreographer.doframe(choreographer.java:560) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:774) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.os.handler.handlecallback(handler.java:808) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.os.handler.dispatchmessage(handler.java:103) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.os.looper.loop(looper.java:193) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ android.app.activitythread.main(activitythread.java:5291) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ java.lang.reflect.method.invokenative(native method) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ java.lang.reflect.method.invoke(method.java:515) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:830) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:646) 01-16 20:46:42.256 4500-4500/****.chefebook d/viewgroup:     @ dalvik.system.nativestart.main(native method) 

thanks time!

if layout portrait , landscape orientation gonna same, can please try adding line in manifest file mainfeed activity.

android:configchanges="orientation|keyboardhidden|screensize" 

hope work you.


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

android - Keyboard hides my half of edit-text and button below it even in scroll view -