android - returning incorrect position in getView method -
i using customgridadapter extends baseadapter display values of array in listview. in getview of customgridadapter position of array values not in flow.
public class customgridadapter extends baseadapter { private context context; private final string[] gridvalues; private final string[] gridimage; //constructor initialize values public customgridadapter(context context, string[] gridvalues, string[] gridimage) { this.context = context; this.gridvalues = gridvalues; this.gridimage=gridimage; } @override public int getcount() { // number of times getview method call depends upon gridvalues.length return gridvalues.length; } @override public object getitem(int position) { return gridvalues[position]; } @override public long getitemid(int position) { return 0; } // number of times getview method call depends upon gridvalues.length public view getview(int position, view convertview, viewgroup parent) { //layoutinflator call external grid_item.xml file layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view gridview; if (convertview == null) { gridview = new view(context); // layout grid_item.xml gridview = inflater.inflate(r.layout.grid_item, null); // set value textview textview textview = (textview) gridview.findviewbyid(r.id.grid_item_label); textview.settext(gridvalues[position]); log.i(new integer(position).tostring(),gridvalues[position] ); imageview grp_icon=(imageview)gridview.findviewbyid(r.id.grid_item_image); bitmapfactory.options options = new bitmapfactory.options(); options.inpreferredconfig = bitmap.config.argb_8888; string path="/sdcard/letsmeet/letsmeet_media/group_images/"+gridimage[position]; bitmap bitmap = bitmapfactory.decodefile(path, options); grp_icon.setimagebitmap(bitmap); // set image based on selected text imageview imageview = (imageview) gridview .findviewbyid(r.id.grid_item_image); string mobile = gridvalues[position]; } else { gridview = (view) convertview; } return gridview; } }
in getview method of customgridadapter postion in order of 0,1,2,0,4 why getting 0 after 2 instead of 3?
@override public long getitemid(int position) { return position; //return position here }
make getview as,
public view getview(int position, view convertview, viewgroup parent) { //layoutinflator call external grid_item.xml file layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view gridview; if (convertview == null) { gridview = new view(context); // layout grid_item.xml gridview = inflater.inflate(r.layout.grid_item, null); // set value textview textview textview = (textview) gridview.findviewbyid(r.id.grid_item_label); textview.settext(gridvalues[position]); log.i(new integer(position).tostring(),gridvalues[position] ); imageview grp_icon=(imageview)gridview.findviewbyid(r.id.grid_item_image); } else { gridview = (view) convertview; } bitmapfactory.options options = new bitmapfactory.options(); options.inpreferredconfig = bitmap.config.argb_8888; string path="/sdcard/letsmeet/letsmeet_media/group_images/"+gridimage[position]; bitmap bitmap = bitmapfactory.decodefile(path, options); grp_icon.setimagebitmap(bitmap); // set image based on selected text imageview imageview = (imageview) gridview .findviewbyid(r.id.grid_item_image); string mobile = gridvalues[position]; return gridview; }
your converview null number of views shown on screen. once scroll them converview != null
, recycled. move code outside it.
Comments
Post a Comment