2013-08-05 92 views
1

因此,我正在製作一個應用程序,記錄聲音,然後將錄製的聲音添加到另一個活動的列表視圖中。這是如何工作的:添加更多元素到列表視圖「覆蓋」當前列表視圖

我錄製聲音後,會彈出一個對話框,要求命名該文件。輸入特定名稱後,我按下「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

試着用ArrayList做這件事。像這樣的東西。

聲明一個全局變量:

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

添加文件名的文件名的每個所述方法這樣執行時間:

fileNames.add(filename.toString()); 

然後此ArrayList添加到listadapter

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

讓我知道它是否有效。

+0

是的!它現在有效。我可能也可以通過聲明ArrayAdapter全局來完成它,但這也可以。謝謝! – Pizzret