ratingbar issue in android -
i make application in display rate-bar on listview , display other 2 widget. got problem in adapter when rate list item , scroll list down , top, rated item clear there no rating display on particular item
let have give 3 star 1st item , scroll down , it, , became 0
here code :::
package com.appfavorits; import java.util.arraylist; import android.content.context; import android.graphics.drawable.drawable; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.imageview; import android.widget.ratingbar; import android.widget.textview; import android.widget.toast; public class listviewcustomadapter extends baseadapter { public context context; layoutinflater inflator; arraylist<comment> appname; arraylist<comment> packagenm; drawable[] alicon; static float[] rating; public listviewcustomadapter(context context, arraylist<comment> appname, arraylist<comment> packagenm, drawable[] alicon) { super(); this.context = context; this.appname = appname; this.packagenm = packagenm; this.alicon = alicon; inflator = layoutinflater.from(context); rating = new float[appname.size()]; // log.i("parse adapter ", " date adapter -> " + // arr_scheduleddeparturetime[1]); } public int getcount() { // todo auto-generated method stub return appname.size(); } public object getitem(int position) { // todo auto-generated method stub return appname.get(position); } public long getitemid(int position) { // todo auto-generated method stub return 0; } public static class viewholder { imageview imgvfavrowiconappicon; textview txvxfavrowiconappname; ratingbar ratingbar1; } public view getview(int position, view convertview, viewgroup parent) { // todo auto-generated method stub // view vi=convertview; // view view = null; viewholder viewholder; if (convertview == null) { viewholder = new viewholder(); convertview = inflator.inflate(r.layout.outbox_list_item, null); viewholder.ratingbar1 = (ratingbar) convertview .findviewbyid(r.id.ratingbar1); ratingbar.onratingbarchangelistener l = new ratingbar.onratingbarchangelistener() { public void onratingchanged(ratingbar ratingbar, float rating, boolean fromtouch) { /* * integer myposition=(integer)ratingbar.gettag(); rowmodel * model=getmodel(myposition); * * model.rating=rating; * * linearlayout parent=(linearlayout)ratingbar.getparent(); * textview label=(textview)parent.findviewbyid(r.id.label); */ // label.settext(model.tostring()); log.i("tag", "rate" + rating); } }; viewholder.ratingbar1.setonratingbarchangelistener(l); viewholder.txvxfavrowiconappname = (textview) convertview .findviewbyid(r.id.txvxfavrowiconappname); viewholder.imgvfavrowiconappicon = (imageview) convertview .findviewbyid(r.id.imgvfavrowiconappicon); // viewholder.ratingbar1 = (ratingbar) // convertview.findviewbyid(r.id.ratingbar1); convertview.settag(viewholder); } else { viewholder = (viewholder) convertview.gettag(); } viewholder.imgvfavrowiconappicon.setimagedrawable(alicon[position]); viewholder.txvxfavrowiconappname.settext(appname.get(position) .tostring()); viewholder.ratingbar1.settag(new integer(position)); viewholder.ratingbar1.setrating(0); /* * viewholder.ratingbar1.setontouchlistener(new ontouchlistener() { * * @override public boolean ontouch(view v, motionevent event) { if * (event.getaction() == motionevent.action_up) { // todo perform * action here } return true; } }); */ return convertview; } }
you getitemid() method in adapter class should return position not 0.
public long getitemid(int position) { // todo auto-generated method stub return position; } update:
i had added listview checkbox scrolling issue. same should apply here, try position of ratingbar inside onratingchanged() using ratingbar.gettag(); , set current rating it.
Comments
Post a Comment