Dark Mode
Image

Android Fragments

Android Service

Android AlarmManager

Camera Tutorial

Sensor Tutorial

Android Graphics

Android Animation

Android Web Service

Android MCQ

Android Quiz

Custom ListView

After creating simple ListView, android also provides facilities to customize our ListView.

As the simple ListView, custom ListView also uses Adapter classes which added the content from data source (such as string array, array, database etc). Adapter bridges data between an AdapterViews and other Views

Example of Custom ListView

In this custom listview example, we are adding image, text with title and its sub-title.

Structure of custom listview project

android Custom Listview 1

activity_main.xml

Create an activity_main.xml file in layout folder.

File: activity_main.xml

<?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.example.test.listviewwithimage.MainActivity">  
  
    <ListView  
        android:id="@+id/list"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:layout_marginBottom="50dp">  
    </ListView>  
</RelativeLayout>  

Create an additional mylist.xml file in layout folder which contains view components displayed in listview.

mylist.xml

File: mylist.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="horizontal" >  
  
    <ImageView  
        android:id="@+id/icon"  
        android:layout_width="60dp"  
        android:layout_height="60dp"  
        android:padding="5dp" />  
  
    <LinearLayout android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:orientation="vertical">  
      
    <TextView  
        android:id="@+id/title"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="Medium Text"  
        android:textStyle="bold"  
        android:textAppearance="?android:attr/textAppearanceMedium"  
        android:layout_marginLeft="10dp"  
        android:layout_marginTop="5dp"  
        android:padding="2dp"  
        android:textColor="#4d4d4d" />  
    <TextView  
        android:id="@+id/subtitle"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="TextView"   
        android:layout_marginLeft="10dp"/>  
    </LinearLayout>  
</LinearLayout> 

Place the all required images in drawable folder.

Activity class

File: MainActivity.java

package com.example.test.listviewwithimage;  
  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.AdapterView;  
import android.widget.ListView;  
import android.widget.Toast;  
  
public class MainActivity extends AppCompatActivity {  
    ListView list;  
  
    String[] maintitle ={  
            "Title 1","Title 2",  
            "Title 3","Title 4",  
            "Title 5",  
    };  
  
    String[] subtitle ={  
            "Sub Title 1","Sub Title 2",  
            "Sub Title 3","Sub Title 4",  
            "Sub Title 5",  
    };  
  
    Integer[] imgid={  
            R.drawable.download_1,R.drawable.download_2,  
            R.drawable.download_3,R.drawable.download_4,  
            R.drawable.download_5,  
    };  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        MyListAdapter adapter=new MyListAdapter(this, maintitle, subtitle,imgid);  
        list=(ListView)findViewById(R.id.list);  
        list.setAdapter(adapter);  
  
  
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
  
            @Override  
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {  
                // TODO Auto-generated method stub  
                if(position == 0) {  
                    //code specific to first list item  
                    Toast.makeText(getApplicationContext(),"Place Your First Option Code",Toast.LENGTH_SHORT).show();  
                }  
  
                else if(position == 1) {  
                    //code specific to 2nd list item  
                    Toast.makeText(getApplicationContext(),"Place Your Second Option Code",Toast.LENGTH_SHORT).show();  
                }  
  
                else if(position == 2) {  
  
                    Toast.makeText(getApplicationContext(),"Place Your Third Option Code",Toast.LENGTH_SHORT).show();  
                }  
                else if(position == 3) {  
  
                    Toast.makeText(getApplicationContext(),"Place Your Forth Option Code",Toast.LENGTH_SHORT).show();  
                }  
                else if(position == 4) {  
  
                    Toast.makeText(getApplicationContext(),"Place Your Fifth Option Code",Toast.LENGTH_SHORT).show();  
                }  
  
            }  
        });  
    }  
}  

 

Customize Our ListView

Create another java class MyListView.java which extends ArrayAdapter class. This class customizes our listview.

MyListView.java

package com.example.test.listviewwithimage;  
  
import android.app.Activity;  
  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ArrayAdapter;  
import android.widget.ImageView;  
import android.widget.TextView;  
  
public class MyListAdapter extends ArrayAdapter<String> {  
  
    private final Activity context;  
    private final String[] maintitle;  
    private final String[] subtitle;  
    private final Integer[] imgid;  
  
    public MyListAdapter(Activity context, String[] maintitle,String[] subtitle, Integer[] imgid) {  
        super(context, R.layout.mylist, maintitle);  
        // TODO Auto-generated constructor stub  
  
        this.context=context;  
        this.maintitle=maintitle;  
        this.subtitle=subtitle;  
        this.imgid=imgid;  
  
    }  
  
    public View getView(int position,View view,ViewGroup parent) {  
        LayoutInflater inflater=context.getLayoutInflater();  
        View rowView=inflater.inflate(R.layout.mylist, null,true);  
  
        TextView titleText = (TextView) rowView.findViewById(R.id.title);  
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);  
        TextView subtitleText = (TextView) rowView.findViewById(R.id.subtitle);  
  
        titleText.setText(maintitle[position]);  
        imageView.setImageResource(imgid[position]);  
        subtitleText.setText(subtitle[position]);  
  
        return rowView;  
  
    };  
}  

Output

android Custom Listview 2
android Custom Listview 3

Comment / Reply From