我想从服务器的MySQL填充微调器,网站是PHP,可以格式化以发送XML或JSON文件。
有没有办法用这些信息填充微调器?我可以将文件保存到内存中,但是如何在微调器上读取它?
文件是否应保存为首选项文件然后以这种方式阅读?
任何帮助将不胜感激。
感谢
答案 0 :(得分:1)
民间;
经过大量的观察,尝试和测试以及对其他事情进行了解读,我回答了自己的问题。
这可能是一个Doh!回答程序员,但我不是程序员,我正在学习并将其作为一个学校项目,因此我对Java的了解甚至不应被称为“基本”。
这是我自己的问题的答案;
String CountryName = preferences.getString("country name", null);
List<String> lCounties = Arrays.asList(Counties(CountryName).split(","));
CharSequence[] csCounties = lCounties.toArray(new CharSequence[lCounties.size()]);
final Spinner sCounty = (Spinner) findViewById(R.id.county);
ArrayAdapter<CharSequence> aCounty = new ArrayAdapter<CharSequence>(
this, android.R.layout.simple_spinner_item,csCounties);
aCounty.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sCounty.setAdapter(aCounty);
sCounty.setSelection(preferences.getInt("county",0));
sCounty.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
int iCounty = sCounty.getSelectedItemPosition();
String CountyName = sCountry.getItemAtPosition(arg2).toString();
SharedPreferences.Editor editor = preferences.edit();
editor.putString("county name", CountyName);
editor.putInt("county", iCounty);
editor.commit();
//Refresh Page is county has changed
if (oCounty != iCounty){ refresh(); }
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
现在这是解释(据我所知......)
首先,我从另一个旋转器中读到了这个国家(我的'少数'旋转器连在一起)
String CountryName = preferences.getString("country name", null);
然后我用这个信息来调用一个子类(我也可以发布它)。该子类联系服务器以创建MySQL查询并检索所需信息;在这种情况下,给定国家的县(或州),该列表被接收为state1,state2,state3,[这是在服务器上的PHP格式化帮助]
List<String> lCounties = Arrays.asList(Counties(CountryName).split(","));
CharSequence[] csCounties = lCounties.toArray(new CharSequence[lCounties.size()]);
下一行代码是实际的Spinner,网上有很多关于微调器的信息,所以我不会解释很多。
微调器使用此行读取保存的信息;
sCounty.setSelection(preferences.getInt("county",0));
这允许微调器预先填充用户选择。
然后我存储选择,我存储名称和指针。保存名称以在页面加载时完成URL并保存指针bacuase Spinner似乎喜欢指针。
SharedPreferences.Editor editor = preferences.edit();
editor.putString("county name", CountyName);
editor.putInt("county", iCounty);
editor.commit();
我做的最后一件事是比较,当页面加载时读取变量oCounty
,它只读取preference
文件并将值存储在oCounty
(原县) ,如果县名更改,则调用refresh()
,此子类刷新页面。 [这对我来说也是一种痛苦]
//Refresh Page is county has changed
if (oCounty != iCounty){ refresh(); }
现在全部工作的方式是,一旦从列表中选择了一个国家/地区,页面就会转到服务器,加载国家/地区的县/州并刷新页面,从而在微调器上加载值,如果国家变化,该过程将再次加载县/州。
使用相同的代码与县/州加载城市,我改变了变量的名称。
我确信程序员可以更好,更快,更快地完成此任务,但这些是关于如何使用存储在服务器上的MySQL数据库中的iformation填充微调器的2美分。
的问候; 拉蒙
答案 1 :(得分:0)
首先解析您的XMl或JSON。然后创建一个将在微调器中显示的数据列表或数组。将数据传递给微调器的适配器。
Spinner sp = (Spinner) findViewById(R.id.spnContactTypes);
String numbers[] = { "ONE", "TWO" }; // data that you got from xml or JSON
ArrayAdapter<String> adapter; = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, numbers);
sp.setAdapter(adapter);
答案 2 :(得分:0)
是的,Spinner可以从解析后的XML
/ JSON
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Map.this.getApplicationContext(), android.R.layout.simple_spinner_item, HERE-GOES-PARSED-ARRAY-OF-JSON-or-XML);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapter);
答案 3 :(得分:-1)
返回端强>
这包括Mysql数据库和Web服务器。
要遵循的摘要步骤:
<强>前端强>