Как я могу сохранить выбранное значение в спиннер, используя общие настройки - PullRequest
0 голосов
/ 02 апреля 2020

В моем диалоговом окне предупреждения есть счетчик. Теперь я хочу сохранить данные выбранного элемента счетчика, используя общие настройки. Я проверил много вопросов, но не смог узнать, как использовать мой код. Пожалуйста, помогите мне.

Вот мой код счетчика, где я проверяю, какой пользователь выбирает, какое значение?

case R.id.location:
  final AlertDialog.Builder mbuilder = new AlertDialog.Builder(HomeActivity.this);
  View v = getLayoutInflater().inflate(R.layout.dialog_layout, null);
  Button okbutton = v.findViewById(R.id.okbutton);
  final Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(HomeActivity.this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.countries_list));
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner.setAdapter(adapter);
  mbuilder.setView(v);
  final AlertDialog dialog = mbuilder.create();

  okbutton.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Log.e("Dialog123", "onClick: Positive" );

         String text = spinner.getSelectedItem().toString();
         newsModels = new ArrayList<>();

         if(text.equals("INDIA")) {
             newsModels.clear();
             TypedArray indianewslogo = getResources().obtainTypedArray(R.array.indianews);
             String[] indianewsname = getResources().getStringArray(R.array.indianewsnames);
             String[] indianewsurl = getResources().getStringArray(R.array.indiahref);
             for(int i =0; i<indianewslogo.length(); i++) {
                 //SendModel sendModel = new SendModel(indianewslogo.getResourceId(i,0),indianewsname[i]);
                 newsModels.add(new NewsModel(indianewslogo.getResourceId(i,0),indianewsname[i], indianewsurl[i]));
             }
             Bundle bundle = new Bundle();
             bundle.putParcelableArrayList("mylist", newsModels);
             HomeFragment homeFragment = new HomeFragment();
             homeFragment.setArguments(bundle);
             FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
             fragmentTransaction.replace(R.id.frame_layout, homeFragment);
             fragmentTransaction.commit();
             binding.bottmNav.getMenu().findItem(R.id.location).setTitle("India");
             binding.bottmNav.getMenu().findItem(R.id.home1).setChecked(true);

             dialog.dismiss();
             }
    }
  });

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Вот как вы должны использовать SharedPreferences:

SharedPreferences sharedPreferences = getSharedPreferences("MySharedPreference", MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("key", "value that you want to save");
editor.commit(); 

Ссылка: https://developer.android.com/training/data-storage/shared-preferences

И вот как вы можете реализовать Ваш код:


SharedPreferences sharedPreferences = getSharedPreferences("MySharedPreference", MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPreferences.edit();

... // your code

switch() {
  case R.id.location:
  final AlertDialog dialog = mbuilder.create();

  ... // your code

  okbutton.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      Log.e("Dialog123", "onClick: Positive" );

      String text = spinner.getSelectedItem().toString();
      editor.putString("selected country", text);
      editor.commit(); 

      ... // your code
      }
});

Если вы хотите получить данные, вы можете назвать их так:

sharedPreferences.getString("selected country", ""); // empty means default value should be string

0 голосов
/ 02 апреля 2020

вы можете использовать этот код для сохранения локального значения:

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(keyString, valueString);
editor.commit();

в вашем коде вы можете работать так:

case R.id.location:
                final AlertDialog.Builder mbuilder = new AlertDialog.Builder(HomeActivity.this);
                View v = getLayoutInflater().inflate(R.layout.dialog_layout, null);
                Button okbutton = v.findViewById(R.id.okbutton);
                final Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(HomeActivity.this, android.R.layout.simple_spinner_item,
                        getResources().getStringArray(R.array.countries_list));
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(adapter);
                mbuilder.setView(v);
                final AlertDialog dialog = mbuilder.create();


               okbutton.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View v) {
                       Log.e("Dialog123", "onClick: Positive" );

                  String text = spinner.getSelectedItem().toString();

               //here save  the selected value of your spinner by this
               SharedPreferences.Editor editor =   sharedPreferences.edit();
                       editor.putString("my_selected_value", text);
                       editor.commit();

                       newsModels = new ArrayList<>();

                       if(text.equals("INDIA")) {
                           newsModels.clear();
                           TypedArray indianewslogo = getResources().obtainTypedArray(R.array.indianews);
                           String[] indianewsname = getResources().getStringArray(R.array.indianewsnames);
                           String[] indianewsurl = getResources().getStringArray(R.array.indiahref);
                           for(int i =0; i<indianewslogo.length(); i++) {
                               //SendModel sendModel = new SendModel(indianewslogo.getResourceId(i,0),indianewsname[i]);
                               newsModels.add(new NewsModel(indianewslogo.getResourceId(i,0),indianewsname[i], indianewsurl[i]));
                           }
                           Bundle bundle = new Bundle();
                           bundle.putParcelableArrayList("mylist", newsModels);
                           HomeFragment homeFragment = new HomeFragment();
                           homeFragment.setArguments(bundle);
                           FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                           fragmentTransaction.replace(R.id.frame_layout, homeFragment);
                           fragmentTransaction.commit();
                           binding.bottmNav.getMenu().findItem(R.id.location).setTitle("India");
                           binding.bottmNav.getMenu().findItem(R.id.home1).setChecked(true);

                           dialog.dismiss();
...