2011-12-05 43 views
1

我想在我的PreferenceActivity中創建一個ListPreference。沒有任何單選按鈕的ListPreferences?

當ListPreference被點擊時,我得到一個帶有列表視圖的對話框。列表視圖中的每一行都有一個文本字段和一個單選按鈕。

我不想要這個單選按鈕,也點擊列表項,我想打開一個打開瀏覽器的意圖?任何想法如何去做呢?

如果我擴展DialogPreference,那麼如何處理onClicks?像onListClickListener會工作嗎?

OR

如果我延長ListPreference什麼是我需要重寫的功能呢?

+0

我還沒有任何代碼。我不知道從哪裏開始:( – Enigma

+0

你提到你不想要一個單選按鈕,但是你想要什麼? – THelper

回答

4

這是可能的,當你自定義首選項。當你只使用首選項時,它的作用就像一個按鈕。以後你必須實現你想要的任何東西。下面的例子簡單地顯示爲你的需求。當你點擊首選項時,它顯示沒有單選按鈕的列表對話框。但我沒有實現將數據存儲在共享偏好設置中。如果你想這樣做,你必須實現你自己的。我只是在這裏發佈一些代碼。

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(); 
    }