ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: MainActivity
名前: lightbox
処理選択
パスワード

件名 MainActivity
名前 lightbox
コメント
@DIV
public class MainActivity extends Activity {

	private FirebaseDatabase database;
	private DatabaseReference mDatabase;
	private ArrayList<Item> userList;
	private User user;
	private ListView listView;
	private int targetPosition;
	private ActivityMainBinding binding;
	private NextViewAction nva;
	private ItemArrayAdapter adapter;
	private ViewSwitcher vs;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// 処理の中心となるインスタンスの取得
		database = FirebaseDatabase.getInstance();
		mDatabase = database.getReference();
		binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

		// 初期データをバインドでセット
		user = new User();
		user.setFirstName("山田");
		user.setLastName("タロウ");
		// User のみセット
		binding.setUser(user);

		// 次画面の処理を別クラスで
		nva = new NextViewAction(MainActivity.this,database,mDatabase,binding);
		nva.initAction();

		// ViewSwitcher のアニメーション
		vs = (ViewSwitcher) MainActivity.this
			.findViewById(R.id.viewSwitcher);
		vs.setInAnimation(AnimationUtils.loadAnimation(
			MainActivity.this, android.R.anim.fade_in));
		vs.setOutAnimation(AnimationUtils.loadAnimation(
			MainActivity.this, android.R.anim.fade_out));


		// ListView のアダプタ
		adapter = new ItemArrayAdapter( MainActivity.this, R.layout.myitem );

		// ListView
		listView = ((ListView)MainActivity.this.findViewById(R.id.listView));
		listView.setAdapter(adapter);

		// 行から次画面
		listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				targetPosition = position;

				ItemArrayAdapter adapter = (ItemArrayAdapter)parent.getAdapter();
				// この時点で次画面に Item の値がセットされる
				binding.setItem( adapter.getItem(position) );

				vs.showNext();
			}
		});

		// Firebase Database より読み込み
		Button buttonFirebase = (Button) MainActivity.this.findViewById(R.id.buttonFirebase);
		buttonFirebase.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				mDatabase.child("class")
					.orderByChild("code")
					.addListenerForSingleValueEvent(new ValueEventListener() {
					@Override
					public void onDataChange(DataSnapshot dataSnapshot) {
						if ( dataSnapshot.exists() ) {
							Log.i("lightbox", dataSnapshot.getValue().toString());

							userList = new ArrayList<Item>();

							Iterator<DataSnapshot> child
								= dataSnapshot.getChildren().iterator();
							while(child.hasNext()) {

								DataSnapshot next = child.next();
								Item item = next.getValue(Item.class);
								Log.i("lightbox",item.getCode()+"/"+item.getName());

								userList.add(item);
							}

							adapter.clear();
							adapter.addAll(userList);

						}
						else {
							Log.i("lightbox","データを読み込めませんでした");
						}
					}

					@Override
					public void onCancelled(DatabaseError databaseError) {
						Log.i("lightbox","onCancelled");
						databaseError.toException().printStackTrace();
					}
				});
			}
		});

		// ボタンを押して、オブジェクトの変更のみで反映されます
		Button buttonSetValue = (Button) MainActivity.this.findViewById(R.id.buttonSetValue);
		buttonSetValue.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				user.setFirstName("鈴木");
				user.setLastName("ジロウ");
				if ( userList != null ) {
					userList.get(0).setText("getView での記述が簡単になりました");
					userList.get(1).setText("しかも、オブジェクトを変更すると ListView も変わります");
				}
			}
		});
	}
}
@END