为什么我的列表视图只显示 ArrayList 的一项?

Why does my listview only show 1 item of the ArrayList?

我查看并发现有人在他们的列表视图中遇到类似问题,但他们的解决方案不适用于我正在尝试做的事情。

我有一个 ListView,如下所示:

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_below="@+id/button3"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

以下是我想出的代码,用于尝试将圣经经文添加到列表视图中,例如,一个项目是 Genesis 1:1,下一个项目是 [=13] =].每节经文都在 ArrayList Verses 中,但只有第一项显示在 ListView

public void addVerse(View v)
{
    String bookName = spinnerBooks().getSelectedItem().toString();
    int chapter = spinnerChapters().getSelectedItemPosition() + 1;
    int verse = spinnerVerses().getSelectedItemPosition() + 1;

    Verse newVerse = new Verse(bookName, chapter, verse);
    Verses.add(newVerse);
    UpdateVerses();
}

public void UpdateVerses()
{
    ArrayList<String> VersesStr = new ArrayList<>();
    for (Verse vObj: Verses)
    {
        String addedStuff = vObj.book.getName() + " " + vObj.Chapter + ":" + vObj.Verse;
        VersesStr.add(addedStuff);
        //System.out.println("Adding this: " + addedStuff);
    }
    ArrayAdapter<String> adapterS = new ArrayAdapter<String>(x,
            android.R.layout.simple_list_item_1, VersesStr);
    for (Verse v : Verses)
    {
        System.out.println(v.book.getName() + " " + v.Chapter + ":" + v.Verse);
    }
    listViewVerses().setAdapter(adapterS);
}
private ListView listViewVerses() { return (ListView) findViewById(R.id.listView); }

我也不是来讨论宗教问题的,所以请不要评论圣经经文。

试试这个:

<ListView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/listView"
  android:layout_below="@+id/button3"
  android:layout_alignParentLeft="true"
  android:layout_alignParentStart="true" />

你也可以试试adapterS.notifyDataSetChanged();如果你是实时更新的话!

您使用 android.R.layout.simple_list_item_1 <- 注意 1. 一个 TextView 就是您所得到的。 What is difference between android.R.layout.simple_list_item_1 and android.R.layout.simple_list_item_2(我同意列表项的措辞有点糟糕,但他们不在乎哈哈)

顺便说一句,2 是最大值,然后您需要创建一个自定义的。 Android 提供的列表是非常简单的列表。

此外,您可以作弊并在文本中使用 \n 使其看起来更多,尽管它们会注册为相同的位置,因此如果您需要单独的点击侦听器,这将不起作用。