猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

Android

layoutのxmlに配置したListViewをアクティビティで操作する

投稿日:2013年3月5日 更新日:

ListViewの操作にはadapterを使用します。

xml

ListViewにアクセスできるようにidを付けておきます。

<?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>
    android:orientation=>vertical> >
    
    <ListView 
        android:id=>@+id/resutlview>
        android:layout_width=>fill_parent>
        android:layout_height=>wrap_content>
        ></ListView>
</LinearLayout>

アクティビティ

一度ArrayAdapter型のadapterを作成します。
ArrayAdapterのコンストラクタには、simple_list_item_1というandroidの定義済みlayoutと、ArrayList型のインスタンスを引数として渡してやります。これがポイントです。

次に作成したadapterに、表示したい文字をaddで追加していきます。
最後にadapterをListViewに設定して完了します。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.result);

        ArrayList<String> dataList = new ArrayList<String>();
   	ListView lv = (ListView)findViewById(R.id.resutlview) ;
    	ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,dataList );
    	String msg=>>;

        for (int i=0; i < 10; i++){
        	msg=i+>行目のデータ>;
        	adapter.add(msg);
        }
    	lv.setAdapter(adapter);
    }

アクティビティから別のアクティビティを呼びだすと、新しいアクティビティは上に重ねられた状態になり、今まで使用していたアクティビティは停止します。
そして新しいアクティビティが終了すると、元のアクティビティが動作し始めます。

呼び出し方には2種類あって、単純に呼び出す方法と、新しいアクティビティが終了すると結果を受信する方法があります。

どちらの呼び出しでもintentを使用し、intentに文字列等を設定して渡してやることができます。
アクティビティ間でオブジェクトを渡す場合にはserializeが必用なので注意が必要ですがここではふれません。

intentには明示的インテントと暗黙的インテントがありますが、同じアプリ内で特定のアクティビティから特定のアクティビティを呼び出す場合には明示的インテントになります。
暗黙的インテントではURIを指定して、合致するURIを持つアプリが起動されるか、複数ある場合はどれを起動するか選択できますが、ここではふれまん。

新しく自作でアクティビティを作成することになるので、AndroidManifest.xmlに登録する必要があります。

単純な呼び出し

呼びだし元ではstartActivity()を使い新しいアクティビティを起動します。。新しいアクティビティはfinish()で終了し、元のアクティビティに戻ります。

//呼び出し元
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = new Intent(Activity.this,Activity2.class);
			intent.putExtra(";MESSAGE";, ";値";);
			startActivity(intent);
		}
    }
//新しいアクティビティ
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);
        Intent data = getIntent();
        Bundle extras = getExtras();
        String msg = extras.getString(";MESSAGE";);
        ・・・
    }
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			finish();
		}
    }
<!-- AndroidManifest.xml -->
<activity android:name=";Activity2"; />

結果を受信する呼び出し

新しいアクティビティが終了する際にsetResultで値を設定し、その値を元のアクティビティではonActibityResultメソッドで受信します。

//呼び出し元
    private static final int ACT_CALL_OK = 0;
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = new Intent(Activity.this,Activity2.class);
			intent.putExtra(";MESSAGE";, ";値";);
			startActivityForResult(intent,ACT_CALL_OK);
		}
    }
    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data){
    	if(requestCode==ACT_CALL_OK && resultCode==RESULT_OK){
    		Bundle extra = data.getExtras();
    		String msg = extra.getString(";MODORI";);
    	}
    	
    }

//新しいアクティビティ
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);
        Intent data = getIntent();
        Bundle extras = getExtras();
        String msg = extras.getString(";MESSAGE";);
        ・・・
    }
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = getIntent();
			intent.putExtra(";MODORI";, ";戻す値";);
			setResult(RESULT_OK, intent);
			finish();
		}
    }
<!-- AndroidManifest.xml -->
<activity android:name=";Activity2"; />

Gooleアドセンス用336

Gooleアドセンス用336

-Android
-

執筆者:

関連記事

ListView(2行)

ListViewの各行に2行表示させるには、ListActivityをextendします。 また、かくリストのデータはmapで設定します。 TestActivity.java package com. …

Windows XPでAndroidのエミュレーターが起動しない

PANIC: Could not open AVD config file このエラーが表示されているのは、 C:\Documents and Settings\[ユーザー名]\.android\av …

クリックリスナーが使えない

急に 型 View のメソッド setOnClickListener(View.OnClickListener) は引数 (MainActivity.btnClickListener) に適用できませ …

AlarmManagerで定期処理を行う

私のやりたいことは、定期的にあるアクションが起動するアプリの作成です。 serviceでいいかと思っていたのですが、何故か画面がスリープした状態で停止します。 そこでAlarmManagerを使用する …

SQLiteにadbでアクセスする

コマンドプロンプトでadbのあるディレクトリまでcdで移動します。 私の場合はD:\Users\xxx\android-sdks\platform-tools にしてあります。 # d: # cd D …