为什么我的列表视图只显示 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 使其看起来更多,尽管它们会注册为相同的位置,因此如果您需要单独的点击侦听器,这将不起作用。
我查看并发现有人在他们的列表视图中遇到类似问题,但他们的解决方案不适用于我正在尝试做的事情。
我有一个 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 使其看起来更多,尽管它们会注册为相同的位置,因此如果您需要单独的点击侦听器,这将不起作用。