コメント |
@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 |