为什么我的listview只显示ArrayList的1项?

时间:2015-10-22 18:25:29

标签: java android arraylist android-listview

我已经查看并发现了类似问题的人,例如他们的列表视图,但他们的解决方案并不适用于我想要做的事情。

我有一个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,下一个项目是Exodus 5:5 。每个经文都在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); }

我也不是在讨论宗教信仰,所以请不要评论圣经经文。

2 个答案:

答案 0 :(得分:2)

试试这个:

<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();如果您要实时更新它!

答案 1 :(得分:0)

你使用android.R.layout.simple_list_item_1&lt; - 注意1.你得到的就是一个TextView。 What is difference between android.R.layout.simple_list_item_1 and android.R.layout.simple_list_item_2(我同意列表项目的措辞有点差,但他们不关心大声笑)

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

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

相关问题