Custom ListView for String List

This tutorial shows how to display a String list in a Custom ListView.

Step 1: Create a new project with name ListViewExample and package name com.myexample.listview. Select File/New/New Project. Fill the forms and click “Finish” button.

Step 2: Open res/layout/xml (or) main.xml and add following code. Here we add a ListView mainListview1.

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:tools="http://schemas.android.com/tools"
	xmlns:ads="http://schemas.android.com/apk/res-auto"
	tools:context=".MainActivity"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:orientation="vertical">

	<ListView
		android:layout_height="wrap_content"
		android:layout_width="wrap_content"
		android:id="@+id/mainListview1"/>

</LinearLayout>

Step 3: In res/layout/ directory add a new file list_item.xml and add following code. Here we add a TextView for displaying text.

 <?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="wrap_content"
	android:orientation="vertical">

	<TextView
		android:layout_height="wrap_content"
		android:layout_width="match_parent"
		android:text="Large Text"
		android:id="@+id/listitemTextView1"
		android:padding="12dp"
		android:textSize="16sp"
		android:textColor="#000000"/>

</LinearLayout>

Step 4: Open app/src/main/java/package and open MainActivity.java. Add following code in it. Here we create a String list and set an adapter to display this String list in ListView.

package com.myexample.listview;

import android.app.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import java.util.*;
import android.content.*;

public class MainActivity extends Activity {

	private ListView listview1;
	private ArrayList<String> fruits = new ArrayList<>();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		listview1 = findViewById(R.id.mainListview1);
		
		listview1.setOnItemClickListener(new AdapterView.OnItemClickListener(){
				@Override
				public void onItemClick(AdapterView<?> parent, View child, int pos, long _pos){
					Toast.makeText(getApplicationContext(), fruits.get(pos), Toast.LENGTH_LONG).show();
				}
			});
			
		fruits.add("Mango");
		fruits.add("Banana");
		fruits.add("Apple");
		fruits.add("Watermelon");
		fruits.add("Guava");
		fruits.add("Grapes");
		fruits.add("Pineapple");
		fruits.add("Litchi");
		fruits.add("Cherry");
		fruits.add("Kiwi");
		fruits.add("Orange");
		fruits.add("Muskmelon");
		fruits.add("Papaya");
		fruits.add("Palm");
		fruits.add("Coconut");
		
		MyAdapter adapter = new MyAdapter(this, fruits);
		listview1.setAdapter(adapter);
	}

	public class MyAdapter extends ArrayAdapter<String> {
		public MyAdapter(Context context, ArrayList<String> string_list) {
			super(context, 0, string_list);
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			if (convertView == null) {
				convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
			}
			parent.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
			TextView txtview = (TextView) convertView.findViewById(R.id.listitemTextView1);
			txtview.setText(fruits.get(position));
			return convertView;
		}
	}

}

Output:
Now run the app. The app will display String list in a ListView.