动态从下拉列表中更改基本 URL。

huangapple go评论106阅读模式
英文:

Change base url dynamically from spinner

问题

我在登录活动中有一个旋转器,其中包含URL列表。我想根据所选的URL动态更改基本URL。我该如何做呢?以下是我的Retrofit客户端:

  1. public class RetrofitClient {
  2. private static Retrofit retrofit;
  3. private static final String BASE_URL="Dynamically_URL";
  4. public static Retrofit getRetrofitInstance(){
  5. if(retrofit==null){
  6. OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
  7. .connectTimeout(25, TimeUnit.SECONDS)
  8. .readTimeout(25, TimeUnit.SECONDS)
  9. .writeTimeout(25, TimeUnit.SECONDS)
  10. .build();
  11. retrofit= new retrofit2.Retrofit.Builder()
  12. .baseUrl(BASE_URL)
  13. .client(okHttpClient)
  14. .addConverterFactory(GsonConverterFactory.create())
  15. .build();
  16. }
  17. return retrofit;
  18. }
  19. }
英文:

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:

  1. public class RetrofitClient {
  2. private static Retrofit retrofit;
  3. private static final String BASE_URL="Dynamically_URL";
  4. public static Retrofit getRetrofitInstance(){
  5. if(retrofit==null){
  6. OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
  7. .connectTimeout(25, TimeUnit.SECONDS)
  8. .readTimeout(25, TimeUnit.SECONDS)
  9. .writeTimeout(25, TimeUnit.SECONDS)
  10. .build();
  11. retrofit= new retrofit2.Retrofit.Builder()
  12. .baseUrl(BASE_URL)
  13. .client(okHttpClient)
  14. .addConverterFactory(GsonConverterFactory.create())
  15. .build();
  16. }
  17. return retrofit;
  18. }
  19. }

答案1

得分: 1

  1. 首先将您选择的旋转器项目保存到共享首选项中
  2. spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  3. @Override
  4. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  5. SharedPreferences sharedPreferences = getSharedPreferences(Cons.PRIVATE_PREF, Context.MODE_PRIVATE);
  6. sharedPreferences.edit().putString("url_selected", spinner.getSelectedItem().toString()).apply();
  7. }
  8. @Override
  9. public void onNothingSelected(AdapterView<?> parent) {}
  10. });
  11. 然后在您的 Retrofit 客户端上调用保存在共享首选项中的 URL
  12. public static Retrofit getRetrofitInstance(Context context) {
  13. SharedPreferences sharedPreferences = context.getSharedPreferences(Cons.PRIVATE_PREF, Context.MODE_PRIVATE);
  14. baseurl = sharedPreferences.getString("url_selected", "");
  15. OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
  16. .connectTimeout(25, TimeUnit.SECONDS)
  17. .readTimeout(25, TimeUnit.SECONDS)
  18. .writeTimeout(25, TimeUnit.SECONDS)
  19. .build();
  20. retrofit = new retrofit2.Retrofit.Builder()
  21. .baseUrl(baseurl)
  22. .client(okHttpClient)
  23. .addConverterFactory(GsonConverterFactory.create())
  24. .build();
  25. return retrofit;
  26. }
英文:

First save your selected spinner item to Shared Preferences

  1. spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  2. @Override
  3. public void onItemSelected(AdapterView&lt;?&gt; parent, View view, int position, long id) {
  4. SharedPreferences sharedPreferences = getSharedPreferences(Cons.PRIVATE_PREF, Context.MODE_PRIVATE);
  5. sharedPreferences.edit().putString(&quot;url_selected&quot;, spinner.getSelectedItem().toString()).apply();
  6. }
  7. @Override
  8. public void onNothingSelected(AdapterView&lt;?&gt; parent){}
  9. });

Then call saved url on shared Preferences on your retrofit Client

  1. public static Retrofit getRetrofitInstance(Context context) {
  2. SharedPreferences sharedPreferences = context.getSharedPreferences(Cons.PRIVATE_PREF, Context.MODE_PRIVATE);
  3. baseurl = sharedPreferences.getString(&quot;url_selected&quot;, &quot;&quot;);
  4. OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
  5. .connectTimeout(25, TimeUnit.SECONDS)
  6. .readTimeout(25, TimeUnit.SECONDS)
  7. .writeTimeout(25, TimeUnit.SECONDS)
  8. .build();
  9. retrofit= new retrofit2.Retrofit.Builder()
  10. .baseUrl(baseurl)
  11. .client(okHttpClient)
  12. .addConverterFactory(GsonConverterFactory.create())
  13. .build();
  14. }
  15. return retrofit;

huangapple
  • 本文由 发表于 2020年9月30日 18:01:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/64135204.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定