我已经查看并发现了类似问题的人,例如他们的列表视图,但他们的解决方案并不适用于我想要做的事情。
我有一个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); }
我也不是在讨论宗教信仰,所以请不要评论圣经经文。
答案 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使其看起来更像,但它们会注册为相同的位置,因此如果您需要单独的点击侦听器,这将无法正常工作。