List view

1) List view is used when we want to display a long list of items

2) The items can also be clickable

public class MainActivity extends AppCompatActivity {

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

        //get list view from layout
        ListView myListView = (ListView) findViewById(R.id.mylist);

        //create List
        final ArrayList<String> myFamily = new ArrayList<String>();
        myFamily.add("A");
        myFamily.add("B");
        myFamily.add("C");
        myFamily.add("D");

        //bind list to listview
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myFamily);
        myListView.setAdapter(arrayAdapter);

        //montior clicking on list items
        myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //parent : whole list
                //view : row of the list that was tapped
                //position : array index of this element, starting from 0

                //log what is tapped
                Toast.makeText(MainActivity.this,myFamily.get(position),Toast.LENGTH_LONG).show();
//                Log.i("Tapped",myFamily.get(position));
            }
        });
    }
}

To update list view after array contents are changed

arrayAdapter.notifyDatasetChanged();

Setting custom layout for each item

Create a new layout resource file with view for a single item.

Instantiate array adaptor pointing to this layout file

new ArrayAdapter<String>(this,R.layout.customitemview,array)

Eg, This is the source code for simple_list_item_1.xml. We can edit attributes from here..

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />

Usage example : See 21_Notes project