package com.example.cosmosclient.views; import android.app.DatePickerDialog; import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageButton; import android.widget.Spinner; import com.example.cosmosclient.R; import com.example.cosmosclient.entities.Request; import com.example.cosmosclient.yolp.Yolp; import java.sql.Date; import java.util.Calendar; public class AddRequestActivity extends AppCompatActivity { private InputMethodManager inputMethodManager; private ImageButton calenderButton; private int curYear; private int curMonth; private int curDayOfMonth; private EditText editTextProduct; private EditText editTextDeadline; private Spinner category; private Spinner subCategory; private String selectedSubCategory; private Button addButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_request); //キーボード表示を制御するためのオブジェクト inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); calenderButton = findViewById(R.id.calenderButton); editTextProduct = findViewById(R.id.editTextProduct); editTextDeadline = findViewById(R.id.editTextDeadline); category = findViewById(R.id.spinnerLocationCategory); subCategory = findViewById(R.id.spinnerLocationSubCategory); setSpinner(category, Yolp.getInstance().getCategoryNames()); addButton = findViewById(R.id.buttonAdd); calenderButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //キーボードを閉じる inputMethodManager.hideSoftInputFromWindow(editTextProduct.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN); //Calendarインスタンスを取得 final Calendar calender = Calendar.getInstance(); //DatePickerDialogインスタンスを取得 DatePickerDialog datePickerDialog = new DatePickerDialog(AddRequestActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { curYear = year; curMonth = month; curDayOfMonth = dayOfMonth; //setした日付を取得して表示 editTextDeadline.setText(String.format("%d / %02d / %02d", year, month+1, dayOfMonth)); } }, calender.get(Calendar.YEAR), calender.get(Calendar.MONTH), calender.get(Calendar.DATE) ); //dialogを表示 datePickerDialog.show(); } }); //editTextDeadlineにリスナーをセット editTextDeadline.setOnKeyListener(new View.OnKeyListener() { //コールバックとしてonKey()メソッドを定義 @Override public boolean onKey(View v, int keyCode, KeyEvent event) { //イベントを取得するタイミングには、ボタンが押されてなおかつエンターキーだったときを指定 if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){ //キーボードを閉じる inputMethodManager.hideSoftInputFromWindow(editTextProduct.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN); return true; } return false; } }); // 追加ボタン addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // //retrofitの処理 // final Retrofit retrofit = new Retrofit.Builder() // .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") // .addConverterFactory(JacksonConverterFactory.create()) // .build(); // // //interfaceから実装を取得 // final GroupsRest requestsService = retrofit.create(GroupsRest.class); // // Call<Request> call = requestsService.getRequestsListByGid(); // //サーバからのレスポンス // call.enqueue(new Callback<Request>() { // //成功時 // @Override // public void onResponse(Call<Request> call, Response<Request> response) { // if (response.isSuccessful()) { // Request result = response.body(); // // //app/Cosmosに情報保存 // Cosmos app = (Cosmos) getApplication(); // // Toast.makeText(RequestListActivity.this, "RequestListに追加しました", Toast.LENGTH_SHORT).show(); // } else { // //onFailureでキャッチできないエラーの処理 // Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show(); // } // } // // //失敗時 // @Override // public void onFailure(Call<Request> call, Throwable t) { // //t.printStackTrace(); // Toast.makeText(RequestListActivity.this, "RequestListの追加失敗しました", Toast.LENGTH_SHORT).show(); // } // }); // エディットテキストのテキストを取得 String inputProduct = editTextProduct.getText().toString(); // 取得したテキストを TextView に張り付ける RequestListActivity.requestlist.add(0, (new Request(inputProduct, new Date(curYear, curMonth, curDayOfMonth), Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), "a-hongo"))); finish(); } }); // リスナーを登録 category.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // アイテムが選択された時 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Spinner spinner = (Spinner)parent; String selectedCategory = (String)spinner.getSelectedItem(); SearchSubCategory(selectedCategory); } // アイテムが選択されなかった public void onNothingSelected(AdapterView<?> parent) { } }); // リスナーを登録 subCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // アイテムが選択された時 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Spinner spinner = (Spinner)parent; selectedSubCategory = (String)spinner.getSelectedItem(); } // アイテムが選択されなかった public void onNothingSelected(AdapterView<?> parent) { } }); } private void SearchSubCategory(String selectedCategory) { switch(selectedCategory) { case "家電・携帯電話": setSpinner(subCategory, Yolp.getInstance().getCategoryByName("家電・携帯電話").getSubCategoryNames().toArray(new String[0])); break; case "コンビニ・スーパー": setSpinner(subCategory, Yolp.getInstance().getCategoryByName("コンビニ・スーパー").getSubCategoryNames().toArray(new String[0])); break; } } private void setSpinner(Spinner spinner, String[] arr){ ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, arr); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); } }