package com.example.sprout.rooms; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import com.example.sprout.R; import com.example.sprout.R.id; import com.example.sprout.R.layout; import com.example.sprout.Sprout; import com.example.sprout.accounts.RegistrationActivity; import net.arnx.jsonic.JSON; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import framework.network.CallBack; public class RoomListActivity extends Activity { private RoomsConnection connection; private Sprout sprout; ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); SimpleAdapter adapter; public static String respose_copy; //最初に処理 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(layout.activity_room_list); sprout = (Sprout) getApplication(); //初期データ代入 data_input(); //戻るボタン buck_button(); //ルームを作成ボタン room_create_button(); //更新ボタン update_button(); //入室関数 enter(); } //戻るボタン public void buck_button() { Button backButton = (Button) findViewById(id.roomlist_button1); backButton.setOnClickListener(new View.OnClickListener() { //押したらタイトル画面へ戻る public void onClick(View v) { Intent intent = new Intent(RoomListActivity.this, RegistrationActivity.class); startActivity(intent); } }); } //ルーム作成ボタン public void room_create_button() { Button roomcreateButton = (Button) findViewById(id.roomlist_button2); roomcreateButton.setOnClickListener(new View.OnClickListener() { //押したらルーム作成画面へ進む public void onClick(View v) { Intent intent = new Intent(RoomListActivity.this, RoomCreateActivity.class); startActivity(intent); } }); } //更新ボタン public void update_button() { Button updateButton = (Button) findViewById(id.roomlist_button3); updateButton.setOnClickListener(new View.OnClickListener() { //押したらルーム一覧を更新する public void onClick(View v) { data_input(); } }); } //入室関数 public void enter() { // ListView を取得 ListView listView = (ListView) findViewById(id.roomlist_listView1); //部屋が一つもないときに表示(部屋がありません) listView.setEmptyView(findViewById(id.roomlist_textView2)); listView.setAdapter(adapter); // アイテムクリック時ののイベントを追加 listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { // 選択アイテムを取得 ListView listView = (ListView) parent; HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(pos); String target_roomid = map.get("roomid"); int target_roomid2 = Integer.parseInt(target_roomid); Rooms rooms = JSON.decode(respose_copy, Rooms.class); Room room = rooms.getRoomById(target_roomid2); if (room.getMemberCount() != 4) { //鍵がかかっている場合 if (room.getKeyCheck() == true) { sprout.setRoomName(room.getRoomName()); sprout.setRoomId(target_roomid2); Intent intent = new Intent(RoomListActivity.this, RoomInputKeyActivity.class); startActivity(intent); } //鍵がかかっていない場合 if (room.getKeyCheck() == false) { sprout.setRoomName(room.getRoomName()); sprout.setRoomId(target_roomid2); connection = sprout.getRoomsConnection(); connection.setCallBack(new CallBack() { @Override public void onResponse(String response) { RoomResponse room = JSON.decode(response, RoomResponse.class); ((Sprout) RoomListActivity.this.getApplication()).setMemberId(room.getMemberId()); //メイン画面へ飛ぶ Intent intent = new Intent(RoomListActivity.this, RoomMainActivity.class); startActivity(intent); } }); //サーバへ送信 int userId = ((Sprout) getApplication()).getUserId(); connection.addFormParam("userId", String.valueOf(userId));//ユーザid connection.addPathParam(String.valueOf(target_roomid2));//ルームid connection.doPut(); System.out.println("プットしました"); System.out.println(userId); System.out.println(target_roomid2); System.out.println(respose_copy); } } if (room.getMemberCount() == 4) { Toast.makeText(getBaseContext(), "ルームがいっぱいです!", Toast.LENGTH_SHORT).show(); } } }); } //データ代入関数 public void data_input() { list = new ArrayList<Map<String, Object>>(); connection = sprout.getRoomsConnection(); connection.setCallBack(new CallBack() { @Override public void onResponse(String response) { respose_copy = response; Rooms rooms = JSON.decode(response, Rooms.class); //データを代入 for (int n = 0; n < rooms.getRoomCount(); n++) { Map data = new HashMap(); Room room = rooms.getRoomByIndex(n); data.put("roomname", "" + room.getRoomName()); data.put("hostname", "" + room.getHostName()); data.put("count", room.getMemberCount() + "/4"); data.put("roomid", "" + room.getRoomId()); if (room.getKeyCheck() == false) { data.put("img", R.drawable.ic_launcher); } else if (room.getKeyCheck() == true) { data.put("img", R.drawable.ic_launcher); } list.add(data); } // ListView を取得 ListView listView = (ListView) findViewById(id.roomlist_listView1); adapter = new SimpleAdapter( RoomListActivity.this, list,//ArrayList layout.roomlist_item,//ListView内の1項目を定義したxml new String[]{"roomname", "hostname", "img", "count", "roomid"},//mapのキー new int[]{id.roomname, id.hostname, id.img, id.count, id.roomid});//item.xml内のid // アダプタをセット listView.setAdapter(adapter); } }); connection.doGet(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.room_list, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }