OLIKER
OLIKER

Reputation: 35

Change base url dynamically from spinner

I've got spinner in my login activity with url list. I would like to change base url dynamically, based on selected url. How can i do it? Below is my Retrofit client:

public class RetrofitClient {

private static Retrofit retrofit;

private static final String BASE_URL="Dynamically_URL";


public static Retrofit getRetrofitInstance(){

    if(retrofit==null){

        OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
                .connectTimeout(25, TimeUnit.SECONDS)
                .readTimeout(25, TimeUnit.SECONDS)
                .writeTimeout(25, TimeUnit.SECONDS)
                .build();
        retrofit= new retrofit2.Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

}

Upvotes: 2

Views: 160

Answers (1)

Mochamad Taufik Hidayat
Mochamad Taufik Hidayat

Reputation: 1314

First save your selected spinner item to Shared Preferences

  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {           
               @Override
               public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    SharedPreferences sharedPreferences = getSharedPreferences(Cons.PRIVATE_PREF, Context.MODE_PRIVATE);

            sharedPreferences.edit().putString("url_selected", spinner.getSelectedItem().toString()).apply();
}
           @Override
           public void onNothingSelected(AdapterView<?> parent){}

});

Then call saved url on shared Preferences on your retrofit Client

public static Retrofit getRetrofitInstance(Context context) {

SharedPreferences sharedPreferences = context.getSharedPreferences(Cons.PRIVATE_PREF, Context.MODE_PRIVATE);

  baseurl = sharedPreferences.getString("url_selected", "");  

        OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
                .connectTimeout(25, TimeUnit.SECONDS)
                .readTimeout(25, TimeUnit.SECONDS)
                .writeTimeout(25, TimeUnit.SECONDS)
                .build();
        retrofit= new retrofit2.Retrofit.Builder()
                .baseUrl(baseurl)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;



              

Upvotes: 1

Related Questions