I want to show images in ListView. The images come from url.I am able to successfully show images in ListView but problem is, loading of images is very slow and when I scroll the ListView, the previous images get disappeared.Please tell me where is the mistake in my code :
LazyAdapter
public class LazyAdapter extends BaseAdapter{
static Context context;
private TextView timeTextView;
private ListView listView;
private ImageView imageView2;
private TextView addressTxtView;
private TextView dateTextView;
private Button shareBtn;
private Button mapButton;
private String mydate;
private TextView headTextView;
private String imageurl[]=null;
DisplayImageOptions doption=null;
private ImageLoadingListener animateFirstListener =null;
private Integer[]
images=new Integer[]{R.drawable.citytraffic,0,0,0,0,0,0,0,0,0};
// static ImageLoader imageLoader = ImageLoader.getInstance();
public LazyAdapter(Context c,String[] url){
context=c;
this.imageurl=url;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return images.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
mydate = java.text.DateFormat.getDateTimeInstance().
format(Calendar.getInstance().getTime());
LayoutInflater inflater=(LayoutInflater)context.
getSystemService(context.LAYOUT_INFLATER_SERVICE);
View v=inflater.inflate(R.layout.custom_data_list, null);
shareBtn=(Button)v.findViewById(R.id.shareBtn);
mapButton=(Button)v.findViewById(R.id.reportBtn);
imageView2=(ImageView) v.findViewById(R.id.imageView2);
//
animateFirstListener = new AnimateFirstDisplayListener();
addressTxtView=(TextView) v.findViewById(R.id.adddTextId);
headTextView = (TextView)v.findViewById(R.id.headTextId);
addressTxtView.setText("Munirabad-Medchal Road, Secunderabad, Andhra Pradesh 502401,
India");
dateTextView=(TextView) v.findViewById(R.id.dateTextId);
dateTextView.setText(mydate);
headTextView.setText("Traffic Jam At");
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage("", imageView2);
imageLoader.displayImage(imageurl[position], imageView2, animateFirstListener);
return v;
}
private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
static final List<String> displayedImages = Collections.synchronizedList(new
LinkedList<String>());
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null) {
ImageView imageView = (ImageView) view;
boolean firstDisplay = !displayedImages.contains(imageUri);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView, 500);
displayedImages.add(imageUri);
}
}
}
}
}
activity
public class JamLocationsActivity extends Activity {
String[] names={"durga1","durga2","durga3"};
static String uri1="https://i3.ytimg.com/vi/bQaWsVQSLdY/default.jpg";
static String uri2="https://i4.ytimg.com/vi/cJQCniWQdno/mqdefault.jpg";
static String uri3="https://i1.ytimg.com/vi/D8dA4pE5hEY/mqdefault.jpg";
public static String[] urls={uri1,uri2,uri3};
private TextView addTextView;
private TextView timeTextView;
private ListView listView;
private ImageView iv;
private TextView tv1;
private TextView tv2;
private Button shareBtn;
private Button mapButton;
private String mydate;
private TextView headTextView;
private String[] imageUrls;
private Integer[] images;
private static ImageLoader imageLoader=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar bar = getActionBar();
bar.setDisplayShowHomeEnabled(false);
bar.setDisplayShowTitleEnabled(false);
bar.setDisplayShowCustomEnabled(true);
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffffff")));
imageUrls=Constants.IMAGES;
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getActionBar().setCustomView(R.layout.action_bar_jamlocation);
setContentView(R.layout.activity_jam_locations);
/* Bundle bundle = getIntent().getExtras();
imageUrls = bundle.getStringArray("stringarrayimage");*/
imageLoader = ImageLoader.getInstance();
JamLocationsActivity.imageLoader.init(ImageLoaderConfiguration.createDefault(this));
String s= "";
int i=0;
i=Integer.parseInt(s+0);
Log.e("INT VAL"," "+ i);
// images=new Integer[]{R.drawable.citytraffic,i,i,i,0,0,0,0,0,0};
LazyAdapter adapter = new LazyAdapter(JamLocationsActivity.this,imageUrls);
listView=(ListView)findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
}