2014-09-02 56 views
1

我从jsonarray填充微调器,我需要将微调器设置为存储在首选项中的值。我想设置微调字符串“id”与存储在首选项中的“idlocatie”相等。如何根据首选项中的值设置微调器值

SharedPreferences mySharedPreferences =PreferenceManager.getDefaultSharedPreferences(this);  
    final String locatie= mySharedPreferences.getString("idlocatie", ""); 
JSONObject jsonLocatii = JSONfunctions.getJSONfromURL("http://www.mySite"); 
     try{  
    JSONArray earthquakes = jsonLocatii.getJSONArray("earthquakes"); 

     for(int i=0;i<earthquakes.length();i++){       
      JSONObject e = earthquakes.getJSONObject(i);     
      String id = e.getString(TAG_IDLOCATIE); 
      String name = e.getString(TAG_LOCATIE);    
      locatiiList.add(new Locatii(id, name.toUpperCase()));   
      locatii = (Spinner) findViewById(R.id.spinLocatie); 
      LocatiiAdapter cAdapter = new LocatiiAdapter(this, android.R.layout.simple_spinner_item, locatiiList); 
      locatii.setAdapter(cAdapter);     
     } 

}catch(JSONException e)  { 
    Log.e("log_tag", "Error parsing data "+e.toString()); 
} 

回答

2

如果我理解它是正确的,你试图设置选定的值? 尝试locatii.setSelection(cAdapter.getPosition(locatie));

或者您是否在尝试更改与选择相关的实际值?

编辑:在这里,试试这个。你需要一些理智的检查,但希望在正确的方向。 另一种选择是重写getPosition(),而另一个选项是从locatiiList中找到索引并使用它。

SharedPreferences mySharedPreferences =PreferenceManager.getDefaultSharedPreferences(this);  
final String locatie= mySharedPreferences.getString("idlocatie", ""); 
JSONObject jsonLocatii = JSONfunctions.getJSONfromURL("http://www.mySite"); 
try {  
    JSONArray earthquakes = jsonLocatii.getJSONArray("earthquakes"); 

    for(int i=0;i<earthquakes.length();i++){       
     JSONObject e = earthquakes.getJSONObject(i);     
     String id = e.getString(TAG_IDLOCATIE); 
     String name = e.getString(TAG_LOCATIE);    
     locatiiList.add(new Locatii(id, name.toUpperCase()));   
    } 
// Move these out of the for loop. 
    locatii = (Spinner) findViewById(R.id.spinLocatie); 
    LocatiiAdapter cAdapter = new LocatiiAdapter(this, android.R.layout.simple_spinner_item, locatiiList); 
    locatii.setAdapter(cAdapter);     

} catch(JSONException e) { 
    Log.e("log_tag", "Error parsing data "+e.toString()); 
} 

locatii.setSelection(getIndex(locatii, locatie)); 

private int getIndex(Spinner spinner, String myString) { 
    for (int i=0;i<spinner.getCount();i++){ 
     if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(myString)){ 
      return i; 
     } 
    } 
    // Check for this when you set the position. 
    return -1; 
} 
+0

感谢您的回答。我有一个值存储在首选项中,当我开始活动时,我想用来自mysql表中的值填充微调器,并将微调器选定值设置为与我存储的值相等的值。我尝试了解决方案,但收到错误“方法类型ArrayAdapter 中的getPosition(Locatii)不适用于参数(String)“。我的表有2列:idlocatie和locatie。 – cvmircea 2014-09-08 19:07:01

+0

谢谢,它正在工作,但我不得不修改类Locatii,现在我的微调显示id不是名称。 – cvmircea 2014-09-12 20:31:42

相关问题