SlideShare a Scribd company logo
Android Application
Development
List Activity & List View
List View
●Android provides the view "List View" which is capable of
displaying a scrollable list of items.
●"ListView"gets the data to display via an adapter. An adapter which
must extend "Base Adapter" and is responsible for providing the data
model for the list and for converting the data into the fields of the
list.
●Android has two standard adapters
- Array Adapter
-Cursor Adapter
● "Array Adapter" can handle data based on Arrays or Lists while
"SimpleCursorAdapter" handle database related data. You can
develop your own Adapter by extending these classes or the Base
Adapter class.
List Activity
●You can directly use the "List View" in your layout as any other UI
component. In case your Activity is primary showing a list you can
extend the activity "List Activity" which simplifies the handling of a
"List View".
● "List Activity" extends "Activity" and provides simplified handling of
lists. For example you have a predefine method if someone clicks on
a list element.
●"List Activity" contains a "List Adapter" which is responsible for
managing the data. This adapter must be set in the onCreate()
method of your Activity via the method setListAdapter().
●If the user select in the list a list entry the method onListItemClick()
will be called. This method allows to access the selected element.
List Activity
●Android provides already some default layouts which you can use in
your Adapter, e.g.
-"android.R.layout.simple_list_item1". In case you don't want to use
one of the pre-defined layouts your own layout must have an
element with the id "@android:id/list" which is the ListView.
-You can also use a view with the id "@android:id/empty". This view
is displayed if the list is empty. For example you could display here
an error message.
ListViews and performance
●Displaying a large dataset must be efficiently implemented on a
mobile device. Therefore the ListView only creates views (widget) if
needed and attach them to the view hierarchy.
●The default Adapter implementation for a ListView will recycle
views, e.g. if a row is not displayed anymore it will be recycled and
only its content will change.
● If you implement your own adapter for a view you also should do
this to avoid performance problems.
ListActivity with ArrayAdapter and Android
standard layout
●Create a new Android project "com.basistraining.listactivity" with
the activity "MyList".
●You do not need to change the default layout "main.xml". Create the
following activity.
public class MyList extends ListActivity {
/** Called when the activity is first created. */
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// Create an array of Strings, that will be put to our ListActivity
String[] names = new String[] { "Bangladesh", "India", "China", "Japan",
"Denmark", "Australia", "Germany", "Indonesia"}
// Create an ArrayAdapter, that will actually make the Strings above
// appear in the ListView
this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.
simple_list_item_1, names));
}
ListActivity with ArrayAdapter and Android
standard layout
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Get the item that was clicked
Object o = this.getListAdapter().getItem(position);
String keyword = o.toString();
Toast.makeText(this, "You selected: " + keyword, Toast.LENGTH_LONG)
.show();
}
ListActivity with ArrayAdapter and Android
standard layout
ListActivity with own layout
●You can also define your own layout for the rows and assign this
layout to your row adapter. We will add a graphic to each list entry.
●Create the following layout file "rowlayout.xml" in the res/layout
folder of your project"com.basistraining.listactivity".
ListActivity with own layout
●Change your activity "MyList" to the following. This is almost the
same coding as in the previous example,
●The only difference is that we are using our own layout in the
ArrayAdapter and telling the adapter which UI element should
contains the text.
ListActivity with own layout
ListActivity with own layout
ListActivities with flexible layout
●The following uses an image "no.png". I placed it in the "res/drawable-
mdpi" folder. You must maintain your own icon. In the easiest case just
copy "icon.png" to "no.png" and use a drawing program to change it a little
bit.
●If you want to influence the display of the different rows you can define
your own adapter and override the getView() method. This method is
responsible for creating the individual rows of your "ListView". getView()
need to return a View (containing several others) for each row.
●For this read the pre-defined layout via the class "LayoutInflator" and
return one individual view per row. We extend ArrayAdapter but we could
also directly implement "BaseAdapter“
●If "convertView" is not null we re-used this view. Android recycles rows
(views) which are not displayed anymore. Using exsting rows saves
memory and CPU consumption.
ListActivities with flexible layout
●Our implementation will also use the so-called "ViewHolder" pattern. The
method findViewById() is a expensive operation, therefore we should
avoid doing this operation if not necessary.
●The ViewHolder stores a reference to the required views in a row. This
ViewHolder is then attached to the row via the method setTag().
●Every view can get a tag assigned. If the row is recycled we can get the
ViewHolder via getTag() method.
●This seems like a lot of overhead but is much faster then the repetitive
call of findViewById().
ListActivities with flexible layout
●We still using the project "com.basistraining.listactivity". Create the
following class "MyArrayAdapter.java".
ListActivities with flexible layout
ListActivities with flexible layout
●Now In the MyList class we write the following code
ListActivities with flexible layout
Rows interacting with the data model
●Your row layout can also contain views which interact with the
underlying data model.
●For example you can have a "Checkbox" view in your row and if the
checkbox is selected you change the data which is displayed in the
row.
●We still use the same project. Create a new row layout
"rowbuttonlayout.xml“.
Rows interacting with the data model
Rows interacting with the data model
●create for this example the class "Model" which hold the name
and the information if this element is currently selected.
Rows interacting with the data model
●Create the following Adapter. This adapter will add a listener on the
Checkbox. If the checkbox is selected the underlying data of the
model is also changed. Search Checkbox gets its model element
assigned via the setTag() method.
Rows interacting with the data model
Rows interacting with the data model
●Finally change your "ListView" to the following.
Rows interacting with the data model
●If you start your app you should be able to flag items. These
changes will be reflected in your model.

More Related Content

PDF
List Views
PPTX
Android MapView and MapActivity
PPTX
Android Tutorials : Basic widgets
PPTX
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
PPT
Android User Interface: Basic Form Widgets
PPTX
Android Application Component: BroadcastReceiver Tutorial
PPTX
Day 15: Content Provider: Using Contacts API
PPT
Day 4: Android: UI Widgets
List Views
Android MapView and MapActivity
Android Tutorials : Basic widgets
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface: Basic Form Widgets
Android Application Component: BroadcastReceiver Tutorial
Day 15: Content Provider: Using Contacts API
Day 4: Android: UI Widgets

What's hot (20)

PPT
Londroid Android Home Screen Widgets
PPTX
Android UI
PPTX
Create an android app for database creation using.pptx
PPTX
Day 15: Working in Background
PPTX
Develop a native application that uses GPS location.pptx
PPTX
Android Workshop: Day 1 Part 3
PDF
Lecture 3 getting active through activities
PPTX
Android Widget
DOCX
Android App To Display Employee Details
PDF
Marakana Android User Interface
PPT
Day 4: Android: Getting Active through Activities
PDF
Android ui layout
PDF
Lab2-android
PPT
View groups containers
PPT
android layouts
PPTX
Android Layout.pptx
PPTX
Android Intent.pptx
PPTX
Create an other activity lesson 3
PPT
Day: 2 Environment Setup for Android Application Development
PPTX
Android Programming.pptx
Londroid Android Home Screen Widgets
Android UI
Create an android app for database creation using.pptx
Day 15: Working in Background
Develop a native application that uses GPS location.pptx
Android Workshop: Day 1 Part 3
Lecture 3 getting active through activities
Android Widget
Android App To Display Employee Details
Marakana Android User Interface
Day 4: Android: Getting Active through Activities
Android ui layout
Lab2-android
View groups containers
android layouts
Android Layout.pptx
Android Intent.pptx
Create an other activity lesson 3
Day: 2 Environment Setup for Android Application Development
Android Programming.pptx
Ad

Viewers also liked (17)

PPTX
Day 9: Make Your App Location Aware using Location API
PPTX
Android Services
PDF
Sensors in Android (old)
PPTX
Android GPS Tutorial
PPTX
Day: 1 Introduction to Mobile Application Development (in Android)
PPT
Day 6: Android BroadcastReceiver Component
PDF
Day 2 android internals a quick overview
PPTX
Creating the first app with android studio
PDF
Training android
PPTX
Mcq peresentation
PPT
Day 5: Android User Interface [View Widgets]
PPTX
Android 1.8 sensor
PPTX
Action Bar Sherlock tutorial
PDF
Day1 before getting_started
PPTX
Android Workshop Day 1 Part 2
PDF
AndroidManifest
PDF
GCM for Android
Day 9: Make Your App Location Aware using Location API
Android Services
Sensors in Android (old)
Android GPS Tutorial
Day: 1 Introduction to Mobile Application Development (in Android)
Day 6: Android BroadcastReceiver Component
Day 2 android internals a quick overview
Creating the first app with android studio
Training android
Mcq peresentation
Day 5: Android User Interface [View Widgets]
Android 1.8 sensor
Action Bar Sherlock tutorial
Day1 before getting_started
Android Workshop Day 1 Part 2
AndroidManifest
GCM for Android
Ad

Similar to Day 8: Dealing with Lists and ListViews (20)

PDF
Day 8: Dealing with Lists and ListViews
DOCX
Android list view tutorial by Javatechig
PPTX
chp 4 UI component hdjdjdduudfinalt.pptx
PPTX
MDAD 5 - Android - Lists, adapters and recycling
PPT
Android ListView and Custom ListView
PPTX
MDAD 4 - Lists, adapters and recycling
PPTX
Introduction to Listview in Android
PPTX
ListView and Custom ListView on Android Development [Thai]
PPTX
List adapter with multiple objects
PDF
Android - Build User Interface
ODP
Android App Development - 11 Lists, grids, adapters, dialogs and toasts
PPTX
Android Chapter 4 part2 Types of View and View group
PPTX
Android Training (AdapterView & Adapter)
PPTX
layout and UI.pptx
DOCX
Lecture exercise on activities
DOCX
Leture5 exercise onactivities
PPTX
Android course Lesson2
PPT
Hello Android
PPTX
05 content providers - Android
Day 8: Dealing with Lists and ListViews
Android list view tutorial by Javatechig
chp 4 UI component hdjdjdduudfinalt.pptx
MDAD 5 - Android - Lists, adapters and recycling
Android ListView and Custom ListView
MDAD 4 - Lists, adapters and recycling
Introduction to Listview in Android
ListView and Custom ListView on Android Development [Thai]
List adapter with multiple objects
Android - Build User Interface
Android App Development - 11 Lists, grids, adapters, dialogs and toasts
Android Chapter 4 part2 Types of View and View group
Android Training (AdapterView & Adapter)
layout and UI.pptx
Lecture exercise on activities
Leture5 exercise onactivities
Android course Lesson2
Hello Android
05 content providers - Android

More from Ahsanul Karim (11)

PDF
Lecture 5: Storage: Saving Data Database, Files & Preferences
PDF
Lecture 2(b) Android Internals A Quick Overview
PDF
Lecture 1 Session 1 Before Getting Started
PDF
লেকচার ১ (ক)- শুরুর আগে:
DOC
Day 4: Activity lifecycle
PDF
Day 1 Android: Before Getting Started
PDF
Mobile Banking in Bangladesh: An Incomplete Study
PDF
Ui layout (incomplete)
PPTX
Android before getting started
PPTX
Introduction to Android Development: Before Getting Started
PPTX
Client-Server
Lecture 5: Storage: Saving Data Database, Files & Preferences
Lecture 2(b) Android Internals A Quick Overview
Lecture 1 Session 1 Before Getting Started
লেকচার ১ (ক)- শুরুর আগে:
Day 4: Activity lifecycle
Day 1 Android: Before Getting Started
Mobile Banking in Bangladesh: An Incomplete Study
Ui layout (incomplete)
Android before getting started
Introduction to Android Development: Before Getting Started
Client-Server

Recently uploaded (20)

PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
A Presentation on Artificial Intelligence
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
cuic standard and advanced reporting.pdf
PPTX
Cloud computing and distributed systems.
PPTX
MYSQL Presentation for SQL database connectivity
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
The AUB Centre for AI in Media Proposal.docx
Diabetes mellitus diagnosis method based random forest with bat algorithm
A Presentation on Artificial Intelligence
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Network Security Unit 5.pdf for BCA BBA.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Unlocking AI with Model Context Protocol (MCP)
The Rise and Fall of 3GPP – Time for a Sabbatical?
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
NewMind AI Weekly Chronicles - August'25 Week I
Dropbox Q2 2025 Financial Results & Investor Presentation
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
cuic standard and advanced reporting.pdf
Cloud computing and distributed systems.
MYSQL Presentation for SQL database connectivity

Day 8: Dealing with Lists and ListViews

  • 2. List View ●Android provides the view "List View" which is capable of displaying a scrollable list of items. ●"ListView"gets the data to display via an adapter. An adapter which must extend "Base Adapter" and is responsible for providing the data model for the list and for converting the data into the fields of the list. ●Android has two standard adapters - Array Adapter -Cursor Adapter ● "Array Adapter" can handle data based on Arrays or Lists while "SimpleCursorAdapter" handle database related data. You can develop your own Adapter by extending these classes or the Base Adapter class.
  • 3. List Activity ●You can directly use the "List View" in your layout as any other UI component. In case your Activity is primary showing a list you can extend the activity "List Activity" which simplifies the handling of a "List View". ● "List Activity" extends "Activity" and provides simplified handling of lists. For example you have a predefine method if someone clicks on a list element. ●"List Activity" contains a "List Adapter" which is responsible for managing the data. This adapter must be set in the onCreate() method of your Activity via the method setListAdapter(). ●If the user select in the list a list entry the method onListItemClick() will be called. This method allows to access the selected element.
  • 4. List Activity ●Android provides already some default layouts which you can use in your Adapter, e.g. -"android.R.layout.simple_list_item1". In case you don't want to use one of the pre-defined layouts your own layout must have an element with the id "@android:id/list" which is the ListView. -You can also use a view with the id "@android:id/empty". This view is displayed if the list is empty. For example you could display here an error message.
  • 5. ListViews and performance ●Displaying a large dataset must be efficiently implemented on a mobile device. Therefore the ListView only creates views (widget) if needed and attach them to the view hierarchy. ●The default Adapter implementation for a ListView will recycle views, e.g. if a row is not displayed anymore it will be recycled and only its content will change. ● If you implement your own adapter for a view you also should do this to avoid performance problems.
  • 6. ListActivity with ArrayAdapter and Android standard layout ●Create a new Android project "com.basistraining.listactivity" with the activity "MyList". ●You do not need to change the default layout "main.xml". Create the following activity. public class MyList extends ListActivity { /** Called when the activity is first created. */ public void onCreate(Bundle icicle) { super.onCreate(icicle); // Create an array of Strings, that will be put to our ListActivity String[] names = new String[] { "Bangladesh", "India", "China", "Japan", "Denmark", "Australia", "Germany", "Indonesia"} // Create an ArrayAdapter, that will actually make the Strings above // appear in the ListView this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout. simple_list_item_1, names)); }
  • 7. ListActivity with ArrayAdapter and Android standard layout @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // Get the item that was clicked Object o = this.getListAdapter().getItem(position); String keyword = o.toString(); Toast.makeText(this, "You selected: " + keyword, Toast.LENGTH_LONG) .show(); }
  • 8. ListActivity with ArrayAdapter and Android standard layout
  • 9. ListActivity with own layout ●You can also define your own layout for the rows and assign this layout to your row adapter. We will add a graphic to each list entry. ●Create the following layout file "rowlayout.xml" in the res/layout folder of your project"com.basistraining.listactivity".
  • 10. ListActivity with own layout ●Change your activity "MyList" to the following. This is almost the same coding as in the previous example, ●The only difference is that we are using our own layout in the ArrayAdapter and telling the adapter which UI element should contains the text.
  • 13. ListActivities with flexible layout ●The following uses an image "no.png". I placed it in the "res/drawable- mdpi" folder. You must maintain your own icon. In the easiest case just copy "icon.png" to "no.png" and use a drawing program to change it a little bit. ●If you want to influence the display of the different rows you can define your own adapter and override the getView() method. This method is responsible for creating the individual rows of your "ListView". getView() need to return a View (containing several others) for each row. ●For this read the pre-defined layout via the class "LayoutInflator" and return one individual view per row. We extend ArrayAdapter but we could also directly implement "BaseAdapter“ ●If "convertView" is not null we re-used this view. Android recycles rows (views) which are not displayed anymore. Using exsting rows saves memory and CPU consumption.
  • 14. ListActivities with flexible layout ●Our implementation will also use the so-called "ViewHolder" pattern. The method findViewById() is a expensive operation, therefore we should avoid doing this operation if not necessary. ●The ViewHolder stores a reference to the required views in a row. This ViewHolder is then attached to the row via the method setTag(). ●Every view can get a tag assigned. If the row is recycled we can get the ViewHolder via getTag() method. ●This seems like a lot of overhead but is much faster then the repetitive call of findViewById().
  • 15. ListActivities with flexible layout ●We still using the project "com.basistraining.listactivity". Create the following class "MyArrayAdapter.java".
  • 17. ListActivities with flexible layout ●Now In the MyList class we write the following code
  • 19. Rows interacting with the data model ●Your row layout can also contain views which interact with the underlying data model. ●For example you can have a "Checkbox" view in your row and if the checkbox is selected you change the data which is displayed in the row. ●We still use the same project. Create a new row layout "rowbuttonlayout.xml“.
  • 20. Rows interacting with the data model
  • 21. Rows interacting with the data model ●create for this example the class "Model" which hold the name and the information if this element is currently selected.
  • 22. Rows interacting with the data model ●Create the following Adapter. This adapter will add a listener on the Checkbox. If the checkbox is selected the underlying data of the model is also changed. Search Checkbox gets its model element assigned via the setTag() method.
  • 23. Rows interacting with the data model
  • 24. Rows interacting with the data model ●Finally change your "ListView" to the following.
  • 25. Rows interacting with the data model ●If you start your app you should be able to flag items. These changes will be reflected in your model.