Java tutorial
package bf.io.openshop.ux.fragments; import android.app.ProgressDialog; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.Spinner; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.List; import bf.io.openshop.CONST; import bf.io.openshop.MyApplication; import bf.io.openshop.R; import bf.io.openshop.SettingsMy; import bf.io.openshop.api.EndPoints; import bf.io.openshop.api.GsonRequest; import bf.io.openshop.entities.Shop; import bf.io.openshop.entities.ShopResponse; import bf.io.openshop.utils.MsgUtils; import bf.io.openshop.utils.Utils; import bf.io.openshop.ux.MainActivity; import bf.io.openshop.ux.adapters.ShopSpinnerAdapter; import bf.io.openshop.ux.dialogs.LicensesDialogFragment; import bf.io.openshop.ux.dialogs.RestartDialogFragment; import timber.log.Timber; /** * Fragment shows app settings and information about used open source libraries. * Important is possibility of changing selected shop (if more shops exist). */ public class SettingsFragment extends Fragment { private ProgressDialog progressDialog; /** * Spinner offering all available shops. */ private Spinner spinShopSelection; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Timber.d("%s - onCreateView", this.getClass().getSimpleName()); View view = inflater.inflate(R.layout.fragment_settings, container, false); MainActivity.setActionBarTitle(getString(R.string.Settings)); progressDialog = Utils.generateProgressDialog(getActivity(), false); spinShopSelection = (Spinner) view.findViewById(R.id.settings_shop_selection_spinner); LinearLayout licensesLayout = (LinearLayout) view.findViewById(R.id.settings_licenses_layout); licensesLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LicensesDialogFragment df = new LicensesDialogFragment(); df.show(getFragmentManager(), LicensesDialogFragment.class.getSimpleName()); } }); requestShops(); return view; } /** * Load available shops from server. */ private void requestShops() { if (progressDialog != null) progressDialog.show(); GsonRequest<ShopResponse> getShopsRequest = new GsonRequest<>(Request.Method.GET, EndPoints.SHOPS, null, ShopResponse.class, new Response.Listener<ShopResponse>() { @Override public void onResponse(@NonNull ShopResponse response) { Timber.d("Available shops response: %s", response.toString()); Shop s = new Shop(); s.setLanguage("ar"); s.setName(""); s.setFlagIcon("https://s23.postimg.org/uwzjqukl7/egypt_flag_48.png"); s.setDescription(""); s.setUrl(""); s.setLogo(""); s.setCurrency("KW"); s.setId(50); s.setGoogleUa("UA-73690730-2"); List<Shop> obj3 = response.getShopList(); obj3.add(2, s); setSpinShops(response.getShopList()); if (progressDialog != null) progressDialog.cancel(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (progressDialog != null) progressDialog.cancel(); MsgUtils.logAndShowErrorMessage(getActivity(), error); } }); getShopsRequest.setRetryPolicy(MyApplication.getDefaultRetryPolice()); getShopsRequest.setShouldCache(false); MyApplication.getInstance().addToRequestQueue(getShopsRequest, CONST.SETTINGS_REQUESTS_TAG); } /** * Prepare spinner with shops and pre-select already selected one. * * @param shops list of shops received from server. */ private void setSpinShops(List<Shop> shops) { ShopSpinnerAdapter adapterLanguage = new ShopSpinnerAdapter(getActivity(), shops, false); spinShopSelection.setAdapter(adapterLanguage); int position = 0; for (int i = 0; i < shops.size(); i++) { if (shops.get(i).getId() == SettingsMy.getActualNonNullShop(getActivity()).getId()) { position = i; break; } } spinShopSelection.setSelection(position); spinShopSelection.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Shop selectedShop = (Shop) parent.getItemAtPosition(position); if (selectedShop != null && selectedShop.getId() != SettingsMy.getActualNonNullShop(getActivity()).getId()) { RestartDialogFragment rdf = RestartDialogFragment.newInstance(selectedShop); rdf.show(getFragmentManager(), RestartDialogFragment.class.getSimpleName()); } else { Timber.e("Selected null or same shop."); } } @Override public void onNothingSelected(AdapterView<?> parent) { Timber.d("Nothing selected"); } }); } @Override public void onStop() { MyApplication.getInstance().cancelPendingRequests(CONST.SETTINGS_REQUESTS_TAG); if (progressDialog != null) progressDialog.cancel(); super.onStop(); } }