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

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -