Android Custom List View

Android Custom List View Example

This example is to create a custom list view in an android application, there will be a fruit list with its image icons

  • ·         Create a new project in android IDE
  • ·         Copy your custom list image icon in folder
    • res/drawable-mdpi

  • ·         Now create a layout
    • res/layout/list_fruit.xml
    • res/layout/list_module.xml
  • ·         Create android java files
    • src/com/customlist/example/ListFruitActivity.java
    • src/com/customlist/example/ListMobileActivity.java
    • src/com/customlist/example/adapter/MobileArrayAdapter.java

package com.customlist.example;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class ListFruitActivity extends ListActivity {

                static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana",
                                                "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
                                                "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

                @Override
                public void onCreate(Bundle savedInstanceState) {
                                super.onCreate(savedInstanceState);

                                // no more this
                                // setContentView(R.layout.list_fruit);

                                setListAdapter(new ArrayAdapter<String>(this, R.layout.list_fruit,
                                                                FRUITS));

                                ListView listView = getListView();
                                listView.setTextFilterEnabled(true);

                                listView.setOnItemClickListener(new OnItemClickListener() {
                                                public void onItemClick(AdapterView<?> parent, View view,
                                                                                int position, long id) {
                                                                // When clicked, show a toast with the TextView text
                                                                Toast.makeText(getApplicationContext(),
                                                                                                ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
                                                }
                                });

                }

}
File: ListFruitActivity.java

package package com.customlist.example;

import com.mkyong.android.adaptor.MobileArrayAdapter;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.view.View;

public class ListMobileActivity extends ListActivity {

                static final String[] MOBILE_OS = new String[] { "Android", "iOS",
                                                "WindowsMobile", "Blackberry"};

                @Override
                public void onCreate(Bundle savedInstanceState) {
                                super.onCreate(savedInstanceState);

                                //setListAdapter(new ArrayAdapter<String>(this, R.layout.list_mobile,
                                //                             R.id.label, MOBILE_OS));
                               
                                setListAdapter(new MobileArrayAdapter(this, MOBILE_OS));
                               

                }

                @Override
                protected void onListItemClick(ListView l, View v, int position, long id) {

                                //get selected items
                                String selectedValue = (String) getListAdapter().getItem(position);
                                Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show();

                }

}
File: ListMobileActivity.java

package com.customlist.example.adaptor;

import com.mkyong.android.R;

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;

public class MobileArrayAdapter extends ArrayAdapter<String> {
                private final Context context;
                private final String[] values;

                public MobileArrayAdapter(Context context, String[] values) {
                                super(context, R.layout.list_mobile, values);
                                this.context = context;
                                this.values = values;
                }

                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                                LayoutInflater inflater = (LayoutInflater) context
                                                                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                                View rowView = inflater.inflate(R.layout.list_mobile, parent, false);
                                TextView textView = (TextView) rowView.findViewById(R.id.label);
                                ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
                                textView.setText(values[position]);

                                // Change icon based on name
                                String s = values[position];

                                System.out.println(s);

                                if (s.equals("WindowsMobile")) {
                                                imageView.setImageResource(R.drawable.windowsmobile_logo);
                                } else if (s.equals("iOS")) {
                                                imageView.setImageResource(R.drawable.ios_logo);
                                } else if (s.equals("Blackberry")) {
                                                imageView.setImageResource(R.drawable.blackberry_logo);
                                } else {
                                                imageView.setImageResource(R.drawable.android_logo);
                                }

                                return rowView;
                }
}
File: MobileArrayAdapter.java

XML Layout Files:

There are two layout files
  • ·         list_fruit.xml
  • ·         list_mobile.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="20sp" >
</TextView>
File: list_fruit.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/logo"
        android:layout_width="50px"
        android:layout_height="50px"
        android:layout_marginLeft="5px"
        android:layout_marginRight="20px"
        android:layout_marginTop="5px"
        android:src="@drawable/windowsmobile_logo" >
    </ImageView>

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="30px" >
    </TextView>

</LinearLayout>
File: list_mobile.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">ListMobileOS</string>
</resources>
File: strings.xml

Android Menifest File

Menifest file has multiple application activity
  • ·         ListMobileActivity
  • ·         ListFruitActivity

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.customlist.example "
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="Custom List View"
            android:name=".ListMobileActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="Fruit List"
            android:name=".ListFruitActivity" >
        </activity>
    </application>

</manifest>

File: AndroidMenifest.xml


Comments