Hi i am a noob to android, I am trying to load some data to a ListView using custom adapter. I am using the following code for loading data. First time, it working well. But while I am trying to load more, then data loads and image is showing random while scrolling. After showing some random images in that list finally shows the correct image. It is repeating on the next scroll also
Here is my getView
code
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
final ViewHolder holder;
if (v == null) {
LayoutInflater vi =
(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.review_list_m, null);
v.setMinimumHeight(height);
holder = new ViewHolder();
holder.item1 = (TextView) v.findViewById(R.id.name);
holder.image = (ImageView) v.findViewById(R.id.posterView);
v.setTag(holder);
}
else
holder=(ViewHolder)v.getTag();
int colorPos = position % colors.length;
v.setBackgroundColor(Color.parseColor(colors[colorPos]));
final Custom custom = entries.get(position);
if (custom != null) {
holder.image.setBackgroundColor(Color.parseColor(colors[colorPos]));
holder.image.setLayoutParams(new LinearLayout.LayoutParams(height-10,width-10));
String imgUrl=custom.getImage();
AsyncHttpClient client = new AsyncHttpClient();
String[] allowedContentTypes = new String[] { "image/png", "image/jpeg" };
client.get(imgUrl, new BinaryHttpResponseHandler(allowedContentTypes) {
@Override
public void onSuccess(byte[] fileData) {
// Do something with the file
ByteArrayInputStream inputStream = new ByteArrayInputStream(fileData);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
holder.image.setImageBitmap(bitmap);
}
});
holder.item1.setHeight(height/3);
Log.v("PATH",custom.getcustomBig());
holder.item1.setText(custom.getcustomBig());
}
return v;
}
Any idea ? Please help
UPDATE
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
final ViewHolder holder;
if (v == null) {
LayoutInflater vi =
(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.review_list_m, null);
v.setMinimumHeight(height);
holder = new ViewHolder();
holder.item1 = (TextView) v.findViewById(R.id.name);
holder.image = (ImageView) v.findViewById(R.id.posterView);
v.setTag(holder);
}
else
holder=(ViewHolder)v.getTag();
int colorPos = position % colors.length;
v.setBackgroundColor(Color.parseColor(colors[colorPos]));
final Custom custom = entries.get(position);
if (custom != null) {
holder.image.setBackgroundColor(Color.parseColor(colors[colorPos]));
holder.image.setLayoutParams(new LinearLayout.LayoutParams(height-10,width-10));
final String imgUrl=custom.getImage();
holder.image.setTag(imgUrl);
holder.image.setImageBitmap(null);
Bitmap cachedBitmap = cache.get(imgUrl);
if( cachedBitmap == null) {
Log.v("HERE","DOWNLOADING");
AsyncHttpClient client = new AsyncHttpClient();
String[] allowedContentTypes = new String[] { "image/png", "image/jpeg" };
client.get(imgUrl, new BinaryHttpResponseHandler(allowedContentTypes) {
@Override
public void onSuccess(byte[] fileData) {
// Do something with the file
ByteArrayInputStream inputStream = new ByteArrayInputStream(fileData);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
holder.image.setImageBitmap(bitmap);
}
});
}
else
{
holder.image.setImageBitmap(cachedBitmap);
}
holder.item1.setHeight(height/3);
//Log.v("PATH",custom.getcustomBig());
holder.item1.setText(custom.getcustomBig());
}