java - RecyclerView with Pictures and Strings as Data Types -
i making app recyclerview needs display 2 image views, , 3 text views. follows tutorials on developers.android.com website, , worked. tried edit adaptor , activity doesn't work.
here adaptor .java file:
package com.winansbros.soccerpredictor; import android.graphics.drawable.drawable; import android.support.v7.widget.recyclerview; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.linearlayout; import android.widget.textview; public class myadapter extends recyclerview.adapter<myadapter.viewholder> { private string[] mdataset1; private string[] mdataset2; private string[] mdataset3; private drawable[] mdataset4; private drawable[] mdataset5; // provide reference views each data item // complex data items may need more 1 view per item, , // provide access views data item in view holder public static class viewholder extends recyclerview.viewholder { // each data item string in case public textview team1textview; public textview team2textview; public textview scoretextview; public imageview team1imageview; public imageview team2imageview; public viewholder(view v) { super(v); team1textview = (textview) v.findviewbyid(r.id.team1name); team2textview = (textview) v.findviewbyid(r.id.team2name); scoretextview = (textview) v.findviewbyid(r.id.card1score); team1imageview = (imageview) v.findviewbyid(r.id.team1imageview); team2imageview = (imageview) v.findviewbyid(r.id.team2imageview); } } // provide suitable constructor (depends on kind of dataset) public myadapter(string[] mydataset, string[] mydataset2, string[] mydataset3, drawable[] mydataset4, drawable[] mydataset5) { mdataset1 = mydataset; mdataset2 = mydataset2; mdataset3 = mydataset3; mdataset4 = mydataset4; mdataset5 = mydataset5; } // create new views (invoked layout manager) @override public myadapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) { // create new view view v = layoutinflater.from(parent.getcontext()) .inflate(r.layout.cardviewwidget, parent, false); // set view's size, margins, paddings , layout parameters linearlayout.layoutparams layoutparams = new linearlayout.layoutparams(linearlayout.layoutparams.wrap_content, linearlayout.layoutparams.wrap_content); layoutparams.setmargins(10, 20, 10, 20); v.setlayoutparams(layoutparams); viewholder vh = new viewholder(v); return vh; } // replace contents of view (invoked layout manager) @override public void onbindviewholder(viewholder holder, int position) { // - element dataset @ position // - replace contents of view element holder.team1textview.settext(mdataset1[position]); holder.team2textview.settext(mdataset2[position]); holder.scoretextview.settext(mdataset3[position]); holder.team1imageview.setimagedrawable(mdataset4[position]); holder.team2imageview.setimagedrawable(mdataset5[position]); } // return size of dataset (invoked layout manager) @override public int getitemcount() { return mdataset1.length; } }
here history activity .java file
package com.winansbros.soccerpredictor; import android.app.activity; import android.content.context; import android.content.intent; import android.content.res.resources; import android.content.res.typedarray; import android.database.cursor; import android.graphics.drawable.drawable; import android.os.bundle; import android.support.v7.widget.linearlayoutmanager; import android.support.v7.widget.recyclerview; import android.util.log; import android.view.view; import android.widget.button; import java.util.arraylist; import java.util.list; import com.google.android.gms.ads.adrequest; import com.google.android.gms.ads.adview; public class history extends activity { context ctx = this; adview madview; adrequest adrequest; button clearbutton; button tipsbutton; stringbuilder sb; databaseoperations dop; integer team1image; integer team2image; typedarray imgs; list<string> winners; list<string> hometeams; list<string> awayteams; list<string> scores; list<drawable> homeimages; list<drawable> awayimages; private recyclerview mrecyclerview; private recyclerview.adapter madapter; private recyclerview.layoutmanager mlayoutmanager; resources res; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_history); res = getresources(); dop = new databaseoperations(ctx); cursor cr = dop.getinformation(dop); cr.movetofirst(); winners = new arraylist<>(); hometeams = new arraylist<>(); awayteams = new arraylist<>(); scores = new arraylist<>(); homeimages = new arraylist<>(); awayimages = new arraylist<>(); if( cr.movetofirst() ) { gethistory(); } mrecyclerview = (recyclerview) findviewbyid(r.id.my_recycler_view); mrecyclerview.sethasfixedsize(true); mlayoutmanager = new linearlayoutmanager(ctx); mrecyclerview.setlayoutmanager(mlayoutmanager); string[] mydataset = hometeams.toarray(new string[hometeams.size()]); string[] mydataset2 = awayteams.toarray(new string[awayteams.size()]); string[] mydataset3 = scores.toarray(new string[scores.size()]); drawable[] mydataset4 = homeimages.toarray(new drawable[homeimages.size()]); drawable[] mydataset5 = awayimages.toarray(new drawable[awayimages.size()]); madapter = new myadapter(mydataset, mydataset2, mydataset3, mydataset4, mydataset5); mrecyclerview.setadapter(madapter); clearbutton = (button) findviewbyid(r.id.clearsqlite); tipsbutton = (button) findviewbyid(r.id.tipsbutton); madview = (adview) findviewbyid(r.id.adview); adrequest = new adrequest.builder() .addtestdevice("8ac41e108cd62b7703ff28358aeec8bc") .build(); madview.loadad(adrequest); log.d("progress", "far"); clearbutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { databaseoperations dob = new databaseoperations(ctx); dob.deleteinformation(ctx); dob.close(); finish(); } }); log.d("progress", "first on click listener"); //sb = new stringbuilder(); //historytextview = (textview) findviewbyid(r.id.historytext); //historytextview.setmovementmethod(new scrollingmovementmethod()); tipsbutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent intent = new intent(getapplicationcontext(), tipsactivity.class); startactivity(intent); } }); log.d("progress", "second on click listener"); dop.close(); } public void gethistory() { log.i("gethistory", "initialized"); cursor cr = dop.getinformation(dop); cr.movetofirst(); { winners.add(cr.getstring(0)); hometeams.add(cr.getstring(1)); awayteams.add(cr.getstring(2)); scores.add(cr.getstring(3)); log.d("cloud files", "object id set"); } while (cr.movetonext()); log.d("gethistory", "lists set"); int size = winners.size(); (int = 0; < size; i++) { if (hometeams.get(i) == "arsenal") { int resid = res.getidentifier("arsenal", "drawable", getpackagename()); homeimages.add(res.getdrawable(resid)); } ... if (awayteams.get(i) == "arsenal") { int resid = res.getidentifier("arsenal", "drawable", getpackagename()); awayimages.add(res.getdrawable(resid)); } if (awayteams.get(i) == "west ham") { int resid = res.getidentifier("westham", "drawable", getpackagename()); awayimages.add(res.getdrawable(resid)); } } log.d("gethistory", "images set"); log.d("cloud files", integer.tostring(size)); log.d("cloud files", awayimages.get(0).tostring()); } }
here cardview being used in adaptor:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.cardview tools:context="com.winansbros.soccerpredictor.history" android:id="@+id/card_view" android:layout_gravity="center" card_view:cardcornerradius="4dp" card_view:cardelevation="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <relativelayout android:layout_width="match_parent" android:layout_height="wrap_content"> <imageview android:layout_width="60dp" android:layout_height="60dp" android:id="@+id/team1imageview" android:layout_alignparenttop="true"/> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/team1name" android:layout_centervertical="true" android:layout_below="@+id/team2name" android:layout_torightof="@+id/team1imageview" android:layout_toendof="@+id/team1imageview" android:width="100dp"/> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/card1score" android:width="20dp" android:layout_centervertical="true" android:layout_aligntop="@+id/team1name" android:layout_torightof="@+id/team1name" android:layout_toendof="@+id/team1name"/> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/team2name" android:width="100dp" android:layout_centervertical="true" android:layout_toleftof="@+id/team2imageview" android:layout_tostartof="@+id/team2imageview"/> <imageview android:layout_width="60dp" android:layout_height="60dp" android:id="@+id/team2imageview" android:layout_centervertical="true" android:layout_alignparentend="true" android:layout_alignparentright="true"/> </relativelayout> </android.support.v7.widget.cardview> </linearlayout>
here history activity xml file:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" xmlns:ads="http://schemas.android.com/apk/res-auto" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin"> <com.google.android.gms.ads.adview android:id="@+id/adview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_alignparentbottom="true" ads:adsize="banner" ads:adunitid="@string/banner_ad_unit_id"> </com.google.android.gms.ads.adview> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="clear history" android:id="@+id/clearsqlite" android:layout_above="@+id/adview" android:layout_alignparentleft="true" android:layout_alignparentstart="true" android:width="150dp" /> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="tips" android:id="@+id/tipsbutton" android:width="150dp" android:layout_above="@+id/adview" android:layout_alignparentright="true" android:layout_alignparentend="true"/> <android.support.v7.widget.recyclerview android:id="@+id/my_recycler_view" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/clearsqlite"/> </relativelayout>
and finally, logcat:
... 06-13 16:51:47.510 2085-2085/com.winansbros.soccerpredictor i/gethistory﹕ initialized 06-13 16:51:47.510 2085-2085/com.winansbros.soccerpredictor d/cloud files﹕ object id set 06-13 16:51:47.511 2085-2085/com.winansbros.soccerpredictor d/cloud files﹕ object id set 06-13 16:51:47.511 2085-2085/com.winansbros.soccerpredictor d/gethistory﹕ lists set 06-13 16:51:47.511 2085-2085/com.winansbros.soccerpredictor d/gethistory﹕ images set 06-13 16:51:47.511 2085-2085/com.winansbros.soccerpredictor d/cloud files﹕ 2 06-13 16:51:47.511 2085-2085/com.winansbros.soccerpredictor d/androidruntime﹕ shutting down vm 06-13 16:52:07.545 2085-2095/com.winansbros.soccerpredictor i/art﹕ thread[5,tid=2095,waitinginmainsignalcatcherloop,thread*=0xb4a33c00,peer=0x12c000a0,"signal catcher"]: reacting signal 3 06-13 16:52:07.545 2085-2095/com.winansbros.soccerpredictor i/art﹕ [ 06-13 16:52:07.745 546: 569 i/process ] sending signal. pid: 546 sig: 3
Comments
Post a Comment