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

そして、2 番目のファイルを記録して別の名前を設定すると、次のようになります

ご覧のとおり、リストビューの新しい行を追加する代わりに、リストビューの最初の行を上書きします。

なぜこれが起こっているのでしょうか?

4

1 に答える 1

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);

それが機能するかどうか教えてください。

于 2013-08-05T23:26:57.373 に答える