2014/08/26

[android]List Viewを表示する

AndroidのLayoutsに掲載されているList Viewの作り方を勉強する

今回は、単純にString型の文字を順番に表示する。

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  String[] data = {"Tokyo\nhoge\nbar", "Osaka", "Nagoya", "Sapporo"};
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, data);
  ListView listView = (ListView) findViewById(R.id.container);
  listView.setAdapter(adapter);


 }
 /* .... */

}
ここで、注意したい点は、android.R.layout.simple_list_item_1はデフォルトで用意されているlayoutなんですね。
てっきりxmlで自前で定義すると思っていたんだけど。
ここにはまってしまい、簡単なListを表示するのに、すんごい手こずってしまった。

後、今回は、単純なView上にListを表示しているだけないので問題はないのかもしれないが、本来であればsetContentViewメソッドのコールバックなりView設置完了後にListViewのadapterを呼ばないといけない気がするんだけどどうなんだろうか?

iOSのTableViewと違って動的に高さを変えてくれるので大変ありがたいんだけど、逆に固定化したい場合はどうすればいいのかまだわからない。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         >
     <ListView
               android:id="@+id/container" 
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"
               android:drawSelectorOnTop="true">
     </ListView>
</LinearLayout>
android:background属性でListViewの背景色を変更することができる。

0 コメント:

コメントを投稿