SQLの窓 イラストAC フリー素材

2012年09月20日

android-binding を使って Windows C#(XAML) のようなバインド処理の実装

プロジェクト作成











コンパイラのバージョン設定( 一般 )



android-binding-v30-0.52.jar を参照

( lib に保存して参照します )





Appication クラス作成





android-binding を初期化して使用可能にします。
package com.example.textbinding;

import android.app.Application;
import gueei.binding.Binder;

public class BindTest extends Application {
	
    @Override
    public void onCreate() {
        super.onCreate();
 
        Binder.init(this);
        // BinderV30.init(this); と書くのが最新のようです
    }

}

AndroidManifest に Application を登録



画面定義

binding: で記述される部分がバインド用です。これを使用すると、イベント名を記述してその名前に対してイヘント処理を java 側で記述可能になります。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:binding="http://www.gueei.com/android-binding/"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/padding_medium"
        tools:context=".MainActivity" 
        binding:text="hello" />

</RelativeLayout>


Activity と バインド用クラス

(MainActivity.java)

package com.example.textbinding;

import gueei.binding.Binder;
import gueei.binding.app.BindingActivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.support.v4.app.NavUtils;

public class MainActivity extends BindingActivity {

    private TestViewModel viewModel = new TestViewModel();
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        View view = Binder.bindView( 
        		this,
        		Binder.inflateView( this, R.layout.activity_main, null, false ),
        		viewModel );
        
        setContentView( view );
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    
}

this.setAndBindRootView(R.layout.activity_main, viewModel);
( 20 〜 25 のかわりにこうするのが最新のようです )
※ BindingActivity が重要

(TestViewModel.java)

package com.example.textbinding;

import gueei.binding.observables.StringObservable;
import gueei.binding.pojo.PojoViewModel;
import gueei.binding.pojo.PojoViewModelHelper;

public class TestViewModel implements PojoViewModel {

    private PojoViewModelHelper helper = new PojoViewModelHelper();
    
    public final StringObservable hello = new StringObservable("こんにちは");
 
    @Override
    public PojoViewModelHelper getHelper() {
        return helper;
    }
 
    @Override
    public void notifyPropertyChanged( String propertyName ) {
        helper.notifyPropertyChanged( propertyName );
    }

}




関連する記事

android-binding を使用した、固定値、イベント、オプションメニューの構築


【Androidの最新記事】
posted by at 2012-09-20 22:24 | Android | このブログの読者になる | 更新情報をチェックする