android - ArrayList not being displayed in RecyclerView -
i'm trying display arraylist of integers inside of recyclerview, integer values in arraylist downloaded json, done, thing need display them in recyclerview.
this code far recyclerview not display anything.
all code updated current code
here's part of mainactivity:
public class mainactivity extends appcompatactivity { private activitymainviewmodel viewmodel; recyclerview recyclerview; mainadapter madapter; public static arraylist<integer> ridelist = new arraylist<>(); @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //setcontentview(r.layout.activity_main); activitymainbinding binding = databindingutil.setcontentview(this, r.layout.activity_main); viewmodel = new activitymainviewmodel(); binding.setviewmodel(viewmodel); recyclerview = (recyclerview) findviewbyid(r.id.recycler_view); recyclerview.sethasfixedsize(true); recyclerview.setlayoutmanager(new linearlayoutmanager(this)); madapter = new mainadapter(ridelist); recyclerview.setadapter(madapter); } here's mainadapter class:
class mainadapter extends android.support.v7.widget.recyclerview.adapter<mainadapter.viewholder> { private arraylist<integer> ridelist; public mainadapter(arraylist<integer> ridelist) { this.ridelist = ridelist; } @override public mainadapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) { view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.row, parent, false); return new viewholder(view); } @override public void onbindviewholder(mainadapter.viewholder holder, int position) { holder.rideheight.settext(string.valueof(ridelist.get(position))); } @override public int getitemcount() { return ridelist.size(); } public class viewholder extends recyclerview.viewholder { public textview rideheight; public viewholder(view itemview) { super(itemview); rideheight = (textview) itemview.findviewbyid(r.id.rideheight_textview); } } }
row.xml:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <textview android:id="@+id/rideheight_textview" android:layout_width="match_parent" android:layout_height="match_parent" android:textsize="20sp"/> </linearlayout> i know looks mess that's because have been searching both on google , youtube on how use recyclerview might have mixed different tutorials , tried somethings myself.
thanks!
edit: jsondata code added on request:
jsondata:
public class jsondata { public observablefield<string> dropheight = new observablefield<>(); public observablefield<string> ridecount = new observablefield<>(); int eid; int sid; public jsondata() { dropheight.set(""); ridecount.set(""); } public void downloadfromskistar() { if (settingsactivity.submitclicked) { eid = settingsactivity.x; sid = settingsactivity.y; } else { eid = 3206; sid = 11; } try { url url = new url("https://www.skistar.com/myskistar/api/v2/views/statisticspage.json?entityid=" + eid + "&seasonid=" + sid + " "); httpurlconnection conn = (httpurlconnection) url.openconnection(); conn.setreadtimeout(10000 /* milliseconds */); conn.setconnecttimeout(15000 /* milliseconds */); conn.setrequestmethod("get"); // starts query conn.connect(); int response = conn.getresponsecode(); log.i("androidexample", "response: " + response); if (response == 200) { string json = getjson(conn.getinputstream()); jsonobject jsonobject = new jsonobject(json); jsonarray jsonarray = jsonobject.getjsonarray("ridestatistics"); int reponame = 0; int rheight = 0; (int = 0; < jsonarray.length(); i++) { jsonobject skirun = jsonarray.getjsonobject(i); reponame += skirun.getint("height"); rheight += skirun.getint("height"); mainactivity.ridelist.add(new integer(rheight)); rheight = 0; } final int height = reponame; final int count = jsonarray.length(); new handler(looper.getmainlooper()).post(new runnable() { @override public void run() { dropheight.set("" + height); ridecount.set("" + count); } }); } } catch (exception e) { log.i("androidexample", "error"); } { } } private string getjson(inputstream stream) throws ioexception { bufferedreader reader; reader = new bufferedreader(new inputstreamreader(stream, "utf-8")); stringbuilder builder = new stringbuilder(); string line; while ((line = reader.readline()) != null) { builder.append(line + '\n'); } //should placed in stream.close(); return builder.tostring(); } }
you can use like..
model..to set value , value
public class custommodel { private int it; public int getit() { return it; } public void setit(int it) { this.it = it; } }adapter ...
private class mainadapter extends recyclerview.adapter<mainadapter.viewholder>{ public mainadapter(arraylist<custommodel> list){ dataset = list; } @override public viewholder oncreateviewholder(viewgroup viewgroup, int viewtype) { view itemlayoutview = layoutinflater.from(viewgroup.getcontext()).inflate( r.layout.row, null); itemlayoutview.setlayoutparams(new recyclerview.layoutparams(recyclerview.layoutparams.match_parent, recyclerview.layoutparams.wrap_content)); mainadapter.viewholder viewholder = new mainadapter.viewholder(itemlayoutview); return viewholder; } @override public void onbindviewholder(viewholder viewholder, int position) { custommodel cardmodel = dataset.get(position); viewholder.rideheight_textview.settext(string.valueof(cardmodel.getid())); } @override public int getitemcount() { return dataset.size(); } public void updatelist(list<custommodel> temp) { dataset = (arraylist<custommodel>) temp; notifydatasetchanged(); } public class viewholder extends recyclerview.viewholder { public textview rideheight_textview; public viewholder(view itemlayoutview) { super(itemlayoutview); rideheight_textview = (textview) itemlayoutview .findviewbyid(r.id.rideheight_textview); itemlayoutview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { //action **** } }); } } }just call like
arraylist<custommodel> menulist = new arraylist<>(); custommodel c = new custommodel(); c.setit(1); recyclerview.sethasfixedsize(true); // listview recyclerview.setlayoutmanager(new linearlayoutmanager(your activity.this)); // create object adapter mainadapter madapter = new mainadapter(menulist); // set adapter object recyclerview recyclerview.setadapter(madapter);row.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#ffffff" android:padding="@dimen/activity_vertical_margin" android:layout_width="match_parent" android:layout_height="wrap_content"> <textview android:id="@+id/rideheight_textview" android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#000000" android:textsize="20sp"/> </linearlayout>
Comments
Post a Comment