Showing posts with label Customized ListView. Show all posts
Showing posts with label Customized ListView. Show all posts

Friday, April 21, 2017

Customized List View in Android with Optimization

Dear All

Please see the customized List View example in Android with Optimization.
I am using latest Android Studio 2.3.1
Please put 10 images in drawable folder

A. The output will be as


B.  XML files are
a. activity_main.xml is as
<?xml version="1.0" encoding="utf-8"?>

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.exam.ravi.listviewex1.MainActivity">


    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

b. single_row.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img4"
        android:layout_margin="10dp"
        android:id="@+id/imageView2"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@+id/imageView2" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Small Text"
        android:id="@+id/textView3"
        android:layout_below="@+id/textView2"
        android:layout_toEndOf="@+id/imageView2" />
</RelativeLayout>

C.  Java Code is as
a. ListFinal.java

package com.exam.ravi.listviewex1;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class ListFinal extends Activity {
    ListView list;
    String membTitles[]={"AUSTRALIA","CANADA","Contry-3","INDIA","NEW ZEALAND",
                    "PAKISTAN","NETHERLAND","Country-8","Country-9","Country-10"};
    String membDesc[]={"Description","Description","Description","Desc","Desc",
                        "Desc","Desc","Desc","Desc","Desc"};
    int images[] = {R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4,
                    R.drawable.img5, R.drawable.img6,R.drawable.img7, R.drawable.img8,
                    R.drawable.img9, R.drawable.img10};

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        list = (ListView) findViewById(R.id.listView);
        MyAdapter adapter = new MyAdapter(this, membTitles, images, membDesc);
        list.setAdapter(adapter);
   }
}

b. MyAdapter.java is 

package com.exam.ravi.listviewex1;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

/** * Created by Ravi on 2/12/2016. */class MyAdapter extends ArrayAdapter<String> {
    Context context;
    String titleArray[];
    int imgs[];
    String descArray[];

    MyAdapter(Context cob, String titles[], int img[], String desc[]) 
    {
        super(cob, R.layout.single_row, R.id.textView2, titles);
        context = cob;
        imgs = img;
        titleArray = titles;
        descArray = desc;
    }

    class MyViewHolder
    {
        ImageView myImage;
        TextView myTitle;
        TextView myDescription;
        MyViewHolder(View view)
        {

            myImage = (ImageView) view.findViewById(R.id.imageView2);
            myTitle = (TextView) view.findViewById(R.id.textView2);
            myDescription = (TextView) view.findViewById(R.id.textView3);
        }


    }
    @Override    public View getView(int position, View convertView, ViewGroup parent) 
    {
        View row=convertView;
        MyViewHolder myViewHolder=null;
      if(row==null) {
            LayoutInflater inflator = (LayoutInflater) context.getSystemService
                                      (Context.LAYOUT_INFLATER_SERVICE);
            row = inflator.inflate(R.layout.single_row, parent, false);
            myViewHolder  = new MyViewHolder(row);
            row.setTag(myViewHolder);
      }
      else      {
          myViewHolder = (MyViewHolder) row.getTag();
      }
        myViewHolder.myImage.setImageResource(imgs[position]);
        myViewHolder.myTitle.setText(titleArray[position]);
        myViewHolder.myDescription.setText(descArray[position]);
        return row;
    }
}