首页 > 解决方案 > 来自 ArrayList 类的列表视图

问题描述

我试图弄清楚如何将存储在单独类中的 ArrayList 的项目显示到 ListView 中。我整天都在查找它,但问题是我找不到像这样的东西,我在其中创建了一个不同的类来存储 ArrayList。这是我的实习任务,他们要求我使用本地数据库或对其进行硬编码,因此我选择对其进行硬编码。

import com.mircea.bookapp.Book;
import java.util.ArrayList;

public class Books
{
    private ArrayList<Book> booklist;

    public Books()
    {
        booklist = new ArrayList<Book>();

        booklist.add(new Book("In Search of Lost Time", "Marcel Proust", 1913, "Modernist"));
        booklist.add(new Book("Ulysses", "James Joyce", 1922, "Modernist novel"));
        booklist.add(new Book("Don Quixote", "Miguel de Cervantes", 1612, "Novel"));
        booklist.add(new Book("The Great Gatsby", "F. Scott Fitzgerald", 1925, "Tragedy"));
        booklist.add(new Book("One Hundred Years Of Solitude", "Gabriel Garcia Marquez", 1967, "Magic realism"));
    }

    public Book getBook(int index)
    {
        return this.booklist.get(index);
    }
}

这是我想从中获取 ListView 信息的类的代码。

标签: androidlistviewandroid-listview

解决方案


在您的 MainActivity onCreate 方法中:

ArrayList<String> books = new ArrayList<>();
//here You have to load all books from Books class as a string to this array
ListView list = (ListView) findViewById(R.id.listView);
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_item_layout, books);
list.setAdapter(adapter);

向资源/布局添加此文件。(这里可以修改ListView中的行样式)

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="50dp"
          android:textSize="20sp"
          android:textColor="@color/colorPrimaryDark"
          android:textAlignment="center"
          android:gravity="center">
</TextView>

您还可以使用自定义样式,例如

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, books);

推荐阅读