android - Set ImageView on a ListView with ViewBinder depending on RatingBar value -
i have in mainactivity listview shows list of movies i'm populating simplecursoradapter. in activity user able set rating ratingbar , float value saved in database. show on mainactivity next name of movie, rating set in other activity.
i tried use ratingbar indicator , set didn't work. tried use 5 insivible imageviews ( stars) became visible depending on float value didn't work. i'm trying use viewbinder, if statements : float value of rating bar database, parse int , set right drawable imageview.
there no errors in logcat imageview doesn't change @ all... maybe i'm wrong in refreshing list? i'm principiant please me :) doing wrong??????
//this main activity:
public class mainactivity extends listactivity implements onitemclicklistener {
public static final int add_manual = 1; private cursor cursor; private movieshandler db; private string [] cols = new string [] {moviesdbconstants.movie_title , moviesdbconstants.movie_uri}; private int [] views = new int [] { r.id.title , r.id.listimgmovie}; private simplecursoradapter adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); db = new movieshandler(this); cursor = db.getallmovies(); adapter = new simplecursoradapter(this, r.layout.list, cursor, cols, views, 0); adapter.setviewbinder(new customviewbinder()); listview lv = getlistview(); lv.setadapter(adapter); lv.setonitemclicklistener(this); registerforcontextmenu(lv); } @override protected void onresume() { super.onresume(); refreshlist(); } private void refreshlist() { cursor = db.getallmovies(); adapter.changecursor(cursor); adapter.notifydatasetchanged(); }
// , viewbinder:
private class customviewbinder implements viewbinder {
@override public boolean setviewvalue(view view, cursor cursor, int columnindex) { if (columnindex == cursor.getcolumnindex(moviesdbconstants.movie_rating)) { int num = (int) cursor.getfloat(columnindex); switch (num){ case 1: ((imageview) view).setbackgroundresource(r.drawable.one_star); break; case 2: ((imageview) view).setbackgroundresource(r.drawable.two_star); break; case 3: ((imageview) view).setbackgroundresource(r.drawable.three_star); break; case 4: ((imageview) view).setbackgroundresource(r.drawable.four_star); break; case 5: ((imageview) view).setbackgroundresource(r.drawable.five_star); break; } return true; } return false; } }
in android have compare .equals(), not "num == 1"
also should use here switch instead many if in setviewvalue()
Comments
Post a Comment