【发布时间】:2011-07-25 12:22:35
【问题描述】:
我希望从服务器的 MySQL 中填充微调器,该网站是 PHP 并且可以格式化为发送 XML 或 JSON 文件。
有没有办法用这些信息填充微调器?我可以将文件保存到内存中,但如何在微调器上读取它?
是否应该将文件保存为首选项文件,然后以这种方式读取?
任何帮助将不胜感激。
谢谢
【问题讨论】:
我希望从服务器的 MySQL 中填充微调器,该网站是 PHP 并且可以格式化为发送 XML 或 JSON 文件。
有没有办法用这些信息填充微调器?我可以将文件保存到内存中,但如何在微调器上读取它?
是否应该将文件保存为首选项文件,然后以这种方式读取?
任何帮助将不胜感激。
谢谢
【问题讨论】:
伙计们;
经过大量的寻找、尝试和测试以及做数百种其他事情后,我回答了我自己的问题。
这可能是一个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,网上关于spinner的资料很多,我就不多解释了。
微调器使用此行读取保存的信息;
sCounty.setSelection(preferences.getInt("county",0));
这允许微调器预先填充用户的选择。
然后我存储选择,我存储名称和指针。加载页面时保存名称以完成 URL,并保存指针,因为 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 数据库中的信息填充微调器的 2 美分。
问候; 拉蒙
【讨论】:
首先解析您的 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);
【讨论】:
是的,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);
【讨论】:
后端
这由 Mysql 数据库和 Web 服务器组成。
要遵循的概要步骤:
前端
【讨论】: