如何在json中显示spinner中的数据

时间:2012-08-27 09:46:00

标签: android json spinner android-spinner

我正在从json url中检索值,然后将其存储在字符串变量中。现在我想在微调器中显示该值。我在strings.xml文件中创建了一个数组列表。 xml文件包含以下代码:

<string name="credit_card_title">Card Type</string>
<string-array name="credit_card">
<item >Select</item>
<item >Visa</item>
<item >MC</item>
<item >Amex</item>
<item >Discover</item>

我的微调代码是:

<Spinner
android:id="@+id/crdtcrd_crdtype"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/credit_card"
android:prompt="@string/credit_card_title" />

从json url中重新获取值后,我将其存储在变量名String cardtype

现在我如何在微调器cardtype中显示crtdcrd_crdtype的值....

json url是:

http://mygogolfteetime.com/iphone/login/ramu@gmail.com/123456

从这个URL我必须检索cardtype的值,并在检索值后,我必须在微调器中显示它..

cardypevisa, mc, amex and discover的不同值 所有这些值都在我的strings.xml文件中,并且在检索值之后我必须在Spinner中显示它。

需要帮助仍然无法找到解决方案..

我正在尝试使用以下代码显示cardtype的值:

crdtcrd_crdtype.setSelection(cardtype);

但它显示了一些错误.. 1.更改为setSelected(..) 2.将cardtype的类型更改为int

提前致谢...

1 个答案:

答案 0 :(得分:-1)

请在下面找到示例代码:

布局文件:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Spinner
    android:id="@+id/cmbNames"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

layout:spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/tvName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
</LinearLayout>

代码:MainActivity.java

public class MainActivity extends Activity {
private static final String NAME = "name";

//{"name":["abc","pqr","xyz"]}
private String jsonNames = "{\"" + NAME + "\":"
        + "[\"abc\",\"pqr\",\"xyz\"]}";
private SimpleAdapter adapter;
private Spinner cmbNames;
private List<HashMap<String, String>> lstNames;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    populateSpinner(jsonNames);

    cmbNames = (Spinner) findViewById(R.id.cmbNames);
    adapter = new SimpleAdapter(this, lstNames, R.layout.spinner_item,
            new String[] { NAME }, new int[] { R.id.tvName });
    cmbNames.setAdapter(adapter);
}

private void populateSpinner(String jsonString) {
    lstNames = new ArrayList<HashMap<String, String>>();

    try {
        JSONObject jsonObj = new JSONObject(jsonNames);
        JSONArray jArray = jsonObj.getJSONArray(NAME);
        for (int i = 0; i < jArray.length(); i++) {
            addNewName(jArray.getString(i));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

}

private void addNewName(String name) {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put(NAME, name);
    lstNames.add(map);
}

}