java - android recycler view and rotation -
im problem , need recycler view,
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?
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
Post a Comment