テキストをリスト表示するプログラムを作ってみる。
サンプルの
HelloAndroidをベースに
レイアウトのmain.xmlにListViewを追加、AcrivityをListActivityに変更し
以下ようにプログラムを書いてみる。
・main.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</TextView>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ListView>
</LinearLayout>
・sample.java
public class AndroidSample extends ListActivity {
private List<String> sampleList = new ArrayList<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sampleList.clear();
for(int i=0; i<5; i++){
sampleList.add("dummy item " + i);
}
ArrayAdapter<String> adpviewList = new ArrayAdapter<String>(this,
R.layout.main,sampleList);
this.setListAdapter(adpviewList);
}
}
コンパイルエラーが取れたので実行してみるとエラーで実行できず。
LogCatに次のエラーが出てました。(もっと沢山でてたが、まずはこれ)
You must supply a resource ID for a TextView
「TextViewにIDを付けてよ」的なメッセージかな??
調べてみると android:id="@+id/****" のようなIDを記述してあげる必要があるようだ。
見よう見まねで以下のように修正し、再トライ。
<TextView
android:id="@+id/textview01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</TextView>
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ListView>
最初のエラーは解決できたが、別のエラーでまだだめ。
ArrayAdapter requires the resource ID to be a TextView
「ArrayAdapterを使う場合は、TextViewじゃないとダメよ」かな?
main.xmlに全部かいてあるのがダメっぽい。
大枠のレイアウトの記述をmain.xmlに、リスト1行のレイアウトを新規に作成した
別のxmlに記述すると上手くいった。
(この辺全然理解してないため結構はまりました。)
TextViewの記述をcol.xmlに記述して再実行。
今度はこのエラー。
Your content must have a ListView whose id attribute is 'android.R.id.list'
ListViewのidは
'android.R.id.list'じゃないとだめらしい。
で、最終的なソース
・main.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ListView>
</LinearLayout>
・col.xml
<?xml version="1.0" encoding="UTF-8"?>
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
>
</TextView>
・sample.java
public class AndroidSample extends ListActivity {
private List<String> sampleList = new ArrayList<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sampleList.clear();
for(int i=0; i<5; i++){
sampleList.add("dummy item " + i);
}
ArrayAdapter<String> adpviewList = new ArrayAdapter<String>(this,
R.layout.col,sampleList);
this.setListAdapter(adpviewList);
}
}
上手くリスト表示できた。
PR