java - 向 ListView 添加更多元素 "overwrites"当前 ListView

标签 java android eclipse android-listview

所以我正在制作一个记录声音的应用程序,然后将录制的声音添加到另一个 Activity 的 ListView 中。这是它的工作原理:

录制声音后,会弹出一个对话框,要求命名文件。输入某个名称后,按“Enter”键,下一个 Activity 将打开。

下一个 Activity 的 xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".RecordedLibrary"
android:id="@+id/rLayout" >

<ListView android:layout_width="fill_parent"   
  android:layout_height="fill_parent"   
  android:id="@+id/mainListView">  
</ListView>

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="Library is empty"
    android:textColor="#C0C0C0" />

</RelativeLayout>

下一个 Activity 的java代码:

listView = (ListView) findViewById (R.id.mainListView);
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow);
listAdapter.add(filename.toString());
listView.setAdapter(listAdapter);

因此,一旦下一个 Activity 打开,我就会将文件名插入到 listAdapter 中。顺便说一句,文件名是我之前在对话框中键入的文件的名称。

R.layout.simplerow xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"  
android:id="@+id/rowTextView"   
android:layout_width="fill_parent"   
android:layout_height="wrap_content"  
android:padding="10dp"  
android:textSize="16sp" >  
</TextView>

所以,在我录制第一个文件并设置某个名称后,会发生这种情况: http://shrani.si/f/1F/3G/4QX53vyH/1.png

现在,在我录制第二个文件并设置不同的名称后,会发生这种情况: http://shrani.si/f/q/qH/2Jmg2zoH/screenshot2013-08-06-00-.png

如您所见,它不会添加新的 ListView 行,而是覆盖 ListView 的第一行。

知道为什么会发生这种情况吗?

最佳答案

尝试使用 ArrayList 执行此操作。像这样的东西。

声明一个全局变量:

ArrayList<String> fileNames = new ArrayList<String>();

每次执行该方法时,将文件名添加到 fileNames 中,如下所示:

fileNames.add(filename.toString()); 

然后将这个ArrayList添加到listadapter

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, fileNames);
listView.setAdapter(listAdapter);

让我知道它是否有效。

关于java - 向 ListView 添加更多元素 "overwrites"当前 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18069039/

相关文章:

java - 在 Java 对话框中嵌入 HTML 链接

java - 迭代哈希集并打印结果

java - Eclipse MyFirstApp Android (build.version.sdk.int)

php - 为什么我不能在 Eclipse 中选择 xdebug 作为 php 调试器

c++ - eclipse 编译但不运行

java - 将映射传递给 IteratorItemReader

java - Google 目录 API setPassword() Java

android - 手动将 Cordova (Phonegap) 插件添加到现有的 android 项目

android - 尝试在 Android Studio 上运行单元测试时出现 NoClassDefFoundError

android - 检测 Android 设备方向(不是屏幕方向)