package org.ntlab.irisclient; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.google.android.material.snackbar.Snackbar; import org.ntlab.irisclient.entities.RoomJson; import org.ntlab.irisclient.models.Member; import org.ntlab.irisclient.viewmodels.RoomViewModel; import java.util.ArrayList; import java.util.List; public class MemberRoomActivity extends AppCompatActivity { //RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class); //フィールド ArrayList<String> viewMembers = new ArrayList<>(); ArrayList<String> oldMembers = new ArrayList<>(); String r = "roomid"; String myName = "null"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_member_room); String roomId = ((Iris) getApplication()).getRid(); String nickname = ((Iris) getApplication()).getNickname(); //自分のなまえ Intent intentMain = getIntent(); myName = intentMain.getStringExtra("nickname"); //-------------------------------------------------------------------------- //メンバー表示 Member mn = new Member(myName); mn.setBelongs("g"); mn.setMaster(false); viewMembers.add(mn.getNickname()); //-------------------------------------------------------------------------- //RoomViewModelへのアクセス RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class); roomViewModel.setRid(roomId); /*memberList = roomViewModel.getMembersLiveData().getValue(); memberList.forEach(m -> members.add(m.getNickname()));*/ ListView membersList = (ListView) findViewById(R.id.MembersList); BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), R.layout.member_list_layout, viewMembers); membersList.setAdapter(adapter); //LiveData(List<Member>)への購読 /*roomViewModel.getMembersLiveData().observe(this, new Observer<List<Member>>() { //private List<Member> members; @Override public void onChanged(List<Member> irisMembers) { int i = 0; if(irisMembers.size() == oldMembers.size()) { do { if (irisMembers.get(i).getNickname().equals(oldMembers.get(i))) { i++; } else { viewMembers.clear(); irisMembers.forEach(m -> viewMembers.add(m.getNickname())); System.arraycopy(viewMembers, 0, oldMembers, 0, viewMembers.size()); BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers); membersList.setAdapter(adapter); break; } } while (i < oldMembers.size()); } else { viewMembers.clear(); irisMembers.forEach(m -> viewMembers.add(m.getNickname())); System.arraycopy(viewMembers, 0, oldMembers, 0, viewMembers.size()); BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers); membersList.setAdapter(adapter); } } });*/ roomViewModel.getStateLiveData().observe(this, new Observer<Integer>() { @Override public void onChanged(Integer state) { if(state >= 1){ Intent intent = new Intent(MemberRoomActivity.this,DrawingActivity.class); startActivity(intent); } } }); //-------------------------------------------------------------------------- //各ボタン処理 buttonProcesses(); //--------------------------------------------------------------- //settings情報 String s = "設定されている内容がここに表示されるはずです"; TextView settingsText = findViewById(R.id.settings); settingsText.setText(s); //--------------------------------------------------------------- //部屋ID情報 TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(roomId); roomViewModel.start(500); } /* // 初期化 private void init() { setContentView(R.layout.activity_member_room); startObserve(); } /*private getMemberInformation(){ }*/ /*private void addMemberToMemberList(String m){ members.add(m); }*/ public void buttonProcesses(){ Button redMasterButton = (Button) findViewById(R.id.beRedMaster); Button redSpyButton = (Button) findViewById(R.id.beRedSpy); Button blueMasterButton = (Button) findViewById(R.id.beBlueMaster); Button blueSpyButton = (Button) findViewById(R.id.beBlueSpy); ImageButton copyButton = (ImageButton) findViewById(R.id.copyButton); ImageButton homeButton = (ImageButton) findViewById(R.id.homeButton); redMasterButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { r = "赤マスターボタン検知しました"; TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); } }); redSpyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { r = "赤諜報員ボタン検知しました"; TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); } }); blueMasterButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { r = "青マスターボタン検知しました"; TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); } }); blueSpyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { r = "青諜報員ボタン検知しました"; TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); } }); homeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { r = "ホームボタン検知しました"; TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); } }); copyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Snackbar.make(v, "コピーしました", Snackbar.LENGTH_LONG).show(); } }); } }