I am using custom list view to show an image and text. The below is the layout file for my list view item and the code behind. I will explain my problem at the bottom of the post.

```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="5dp"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imgTitleImage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:scaleType="fitXY" />

    <TextView
        android:id="@+id/tvNewsTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/imgTitleImage"
        android:layout_alignStart="@+id/imgTitleImage"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingLeft="10dp"
        android:paddingStart="10dp"
        android:paddingRight="10dp"
        android:paddingEnd="10dp"
        android:paddingTop="2dp"
        android:paddingBottom="2dp"
        android:gravity="top|start"
        android:textColor="#FFFFFF"         
        android:background="#80000000" />
</RelativeLayout>

```

Below is the backend code to load necessary info into the list view. 

```
public View getView(final int position, View convertView, ViewGroup parent) 
    {
        SessionManagement sessionmanagement = new SessionManagement(context);
        ViewHolder holder = null;

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.news_item, null);
            holder = new ViewHolder();
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder)convertView.getTag();
        }

        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Touch on view handle                              
                ObjNews objNews = objNewss[position];

                Intent intent = new Intent(activity, NewsViewActivity.class);       

                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                intent.putExtra("newsId", String.valueOf(objNews.newsId));
                intent.putExtra("type", String.valueOf(Config.NEWS_BRANCH));

                context.startActivity(intent);
            }

        });

        holder.imageView = (ImageView)convertView.findViewById(R.id.imgTitleImage);

        //calculate the screen size and image ratio
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);

        int width = size.x;
        float screenRatio = width / 320f;

        holder.imageView.getLayoutParams().height = (int)(75f * screenRatio);
        holder.imageView.getLayoutParams().width = (int)(320f * screenRatio);

        Bitmap titleImage = Global.GetBitmapFromURL("http://www.domain.com/" + objNewss[position].titleImage);

        if(titleImage != null)
        {
            holder.imageView.setImageBitmap(titleImage);
        }   
        else
        {
            holder.imageView.setImageDrawable(context.getResources().getDrawable(R.drawable.news_title_default));    
        }

        //customizing view
        holder.textView = (TextView)convertView.findViewById(R.id.tvNewsTitle);
        holder.textView.setText(objNewss[position].title);                     

        return convertView;
    }

```

These pieces of code works perfectly, the image and text loaded nicely. However, when the item count increase, the loading time too increased. The screen will be blank waiting for the view to get loaded. Below is the logcat obtain.

> 
> 12-21 03:54:20.827: D/OpenGLRenderer(1248): Enabling debug mode 0
> 
> 
> 12-21 03:54:20.955: I/Choreographer(1248): Skipped 36 frames! The
>  application may be doing too much work on its main thread.
> 
> 
> 12-21 03:54:24.991: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 467K, 14%
>  free 4447K/5116K, paused 8ms, total 17ms
> 
> 
> 12-21 03:54:35.587: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 263K, 16%
>  free 4416K/5220K, paused 7ms, total 9ms
> 
> 
> 12-21 03:54:35.591: I/dalvikvm-heap(1248): Grow heap (frag case) to
>  4.647MB for 148492-byte allocation
> 
> 
> 12-21 03:54:35.607: D/dalvikvm(1248): GC\_FOR\_ALLOC freed <1K, 16% free
>  4560K/5368K, paused 14ms, total 15ms
> 
> 
> 12-21 03:54:43.363: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 322K, 18%
>  free 4415K/5368K, paused 8ms, total 8ms
> 
> 
> 12-21 03:54:44.611: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 281K, 18%
>  free 4415K/5368K, paused 8ms, total 9ms
> 
> 
> 12-21 03:54:46.531: W/EGL\_genymotion(1248): eglSurfaceAttrib not
>  implemented
> 
> 
> 12-21 03:54:48.115: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 284K, 18%
>  free 4420K/5368K, paused 8ms, total 10ms
> 
> 
> 12-21 03:54:49.983: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 323K, 18%
>  free 4429K/5368K, paused 6ms, total 6ms
> 
> 
> 12-21 03:54:50.339: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 280K, 18%
>  free 4439K/5368K, paused 11ms, total 11ms
> 
> 
> 12-21 03:54:50.551: I/Choreographer(1248): Skipped 1523 frames! The
>  application may be doing too much work on its main thread.
> 
> 
> 12-21 03:54:51.263: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 288K, 17%
>  free 4500K/5368K, paused 8ms, total 9ms
> 
> 
> 12-21 03:54:54.115: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 326K, 17%
>  free 4497K/5368K, paused 7ms, total 9ms
> 
> 
> 12-21 03:54:54.531: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 281K, 17%
>  free 4496K/5368K, paused 10ms, total 10ms
> 
> 
> 12-21 03:54:55.871: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 287K, 17%
>  free 4506K/5368K, paused 8ms, total 9ms
> 
> 
> 12-21 03:54:56.591: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 324K, 17%
>  free 4506K/5368K, paused 7ms, total 8ms
> 
> 
> 12-21 03:54:57.339: D/dalvikvm(1248): GC\_FOR\_ALLOC freed 281K, 17%
>  free 4506K/5368K, paused 7ms, total 8ms
> 
> 
> 

It could be due to "Bitmap titleImage = Global.GetBitmapFromURL("<http://www.domain.com/>" + objNewss[position].titleImage);" this line of code. If commented the load significantly faster. 

May I know if any experts out there has a better suggestion for me? Better still if can implement an asynchronous loading like groupon etc where it loads and show line by line which will not interfere the user-experience. 

Many thanks.