所以我正在创建一个录制声音的应用程序,然后将录制的声音添加到另一个活动的列表视图中。这是它的工作原理:
录制声音后,会弹出一个对话框,要求命名该文件。输入某个名称后,按“Enter”键,将打开下一个活动。
下一个活动的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>
下一个活动的java代码:
listView = (ListView) findViewById (R.id.mainListView);
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow);
listAdapter.add(filename.toString());
listView.setAdapter(listAdapter);
因此,只要下一个活动打开,我就会将文件名插入listAdapter。顺便说一句,filename是我在对话框中先前输入的文件的名称。
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的第一行。
知道为什么会这样吗?
答案 0 :(得分:0)
尝试使用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);
让我知道它是否有效。