Android – ListView BaseAdapter example

In this tutorial, I will show how to fill ListView with items using BaseAdapter. As always, tutorial has step-by-step instructions. So let’s start.

Step 1 – Put ListView to your layout(it does not matter it is layout for Fragment or Activity – in my case it will be in fragment)

<FrameLayout 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"
   tools:context="net.joerichard.navigationdrawertutorial.LibraryFragment"
   android:background="#FFFFFF">

    <!-- TODO: Update blank fragment layout -->
    <ListView android:layout_width="match_parent" android:layout_height="match_parent"
       android:id="@+id/lvLibrary" />

</FrameLayout>

Step 2: My example will be list of books. That’s why let’s create POJO(Plain Java Object)

public class Book {

    String author;
    String title;
    int cover;

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getCover() {
        return cover;
    }

    public void setCover(int cover) {
        this.cover = cover;
    }
}

Step 3: Add book covers to res/drawables/ folder
book1

book2

book3

book4

book5

book6

book7

book8

book9

Step 4: Retrieve list of books from somewhere. Cases may be different: you may take from parsed JSON file, XML file, SQLite database. In my case, I will populate list of books manually. So I create method which returns List:

private List<Book> getBooksList() {
        List<Book> booksList = new ArrayList<>();

        Book book = new Book();
        book.setCover(R.drawable.book1);
        book.setTitle("Переворот. Проверенная методика захвата рынка");
        book.setAuthor("Люк Уильямс");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book2);
        book.setTitle("Монархия предпринимателя. Как стать царем?");
        book.setAuthor("Геннадий Балашов, Полина Кудиевская");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book3);
        book.setTitle("Как стать авантюристом? Размышления миллионера");
        book.setAuthor("Геннадий Балашов");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book4);
        book.setTitle("Мастерство продажи");
        book.setAuthor("Мишель Завадский");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book5);
        book.setTitle("Влейте в нее свое сердце. Как чашка за чашкой строилась STARBUCKS");
        book.setAuthor("Говард Шульц, Дори Джонс Йенг");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book6);
        book.setTitle("Книга: Мероприятие на миллион. Быстрые деньги на чужих знаниях");
        book.setAuthor("Андрей Парабеллум, Валерий Морозов");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book7);
        book.setTitle("Brand: Поп-арт роман");
        book.setAuthor("Олег Сивун");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book8);
        book.setTitle("Путь собственника. От предпринимателя до председателя совета директоров");
        book.setAuthor("Джейна Мэтьюз, Кэтрин Кэтлин");
        booksList.add(book);

        book = new Book();
        book.setCover(R.drawable.book9);
        book.setTitle("Структура в кулаке: создание эффективной организации");
        book.setAuthor("енри Минцберг");
        booksList.add(book);

        return booksList;
    }

Step 5: Create Adapter for filling ListView with items:

package net.joerichard.navigationdrawertutorial;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

/**
 * Created by joe on 10.08.15.
 */

public class LibraryAdapter extends BaseAdapter {

    Context context;
    List<Book> booksList;

    public LibraryAdapter(Context context, List<Book> booksList) {
        this.context = context;
        this.booksList = booksList;
    }

    @Override
    public int getCount() {
        return booksList.size();
    }

    @Override
    public Object getItem(int position) {
        return booksList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = parent.inflate(context, R.layout.listitem_book, null);

        Book book = (Book) getItem(position);

        ImageView ivCover = (ImageView) view.findViewById(R.id.ivCover);
        ivCover.setImageResource(book.getCover());

        TextView tvTitle = (TextView) view.findViewById(R.id.tvTitle);
        tvTitle.setText(book.getTitle());

        TextView tvAuthor = (TextView) view.findViewById(R.id.tvAuthor);
        tvAuthor.setText(book.getAuthor());

        return view;
    }
}

Step 6: Last step to connect everything.

        ListView lvLibrary = (ListView) view.findViewById(R.id.lvLibrary);
        List<Book> booksList = getBooksList();
        LibraryAdapter adapter = new LibraryAdapter(getActivity(), booksList);
        lvLibrary.setAdapter(adapter);

Result:
Screenshot_2015-08-10-16-35-16