Список предпочтений без каких-либо переключателей? - PullRequest
1 голос
/ 05 декабря 2011

Я хочу создать ListPreference в моей PreferenceActivity.

Когда щелкают по ListPreference, я получаю диалоговое окно со списком.Каждая строка в виде списка имеет текстовое поле и переключатель.

Я не хочу эту радиокнопку, а также при нажатии на элемент списка, я хочу запустить намерение, которое открывает браузер?Есть идеи, как это сделать?

Если я расширяю DialogPreference, то как обрабатывать клики?Вроде onListClickListener будет работать?

ИЛИ

Если я расширю ListPreference, какие функции мне нужно переопределить?

1 Ответ

4 голосов
/ 06 декабря 2011

Это возможно, когда вы настраиваете предпочтения. Когда вы используете только предпочтения, он работает как кнопка. И позже вам нужно реализовать все, что вы хотите. Следующий пример просто показывает как ваше требование. Когда вы нажимаете предпочтение, он показывает список диалогов без переключателей. Но я не реализован для хранения данных в общих настройках. Если вы хотите сделать это, вы должны реализовать свой собственный. Я просто опубликую некоторый код здесь.

prefereces=findPreference("intent");
       // prefereces.setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse("https://market.android.com/")));
  // prefereces.setIntent(new Intent(getApplicationContext(), DynamicPreference.class));

       prefereces.setOnPreferenceClickListener(new OnPreferenceClickListener() {

        @Override
        public boolean onPreferenceClick(Preference preference) {
            // TODO Auto-generated method stub

            createListPreferenceDialog();
            return true;
        }


    });


    }
    private void createListPreferenceDialog()
    {

        Dialog dialog;
        final CharSequence str[]={"Android","Black Berry","Symbian"};
        AlertDialog.Builder b=new AlertDialog.Builder(PreferenceActivities1Activity.this);
        b.setTitle("Mobile OS");

        b.setItems(str, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int position)
            {

                showToast("I am Clicked "+str[position]);
//              switch (position) 
//              {
//              case 0:
//                  showToast("I am Clicked "+str[position]);
//                  break;
//
//              default:
//                  break;
//              }

            }
        });

        dialog=b.create();
        dialog.show();

    }
    public void showToast(String msg)
    {
        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
    }
...