Как вывести данные в spinner из json

Я извлекаю значения из URL-адреса json, а затем сохраняю его в строковой переменной. Теперь я хочу отобразить это значение в счетчике. Я создал список массивов в файле 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" />

После извлечения значения из URL-адреса json я сохраняю его в имени переменной String cardtype

Теперь, как я могу отобразить значение cardtype в Spinner crtdcrd_crdtype....

URL-адрес json:

http://mygogolfteetime.com/iphone/login/[email protected]/123456

Из этого URL-адреса я должен получить значение cardtype, и после получения значения я должен отобразить его в счетчике.

Существуют разные значения для cardype, например visa, mc, amex and discover. Все эти значения находятся в моем файле strings.xml, и после получения значения я должен отобразить его в Spinner..

Нужна помощь, пока не могу найти решение..

Я пытаюсь отобразить значение cardtype, используя следующий код:

crdtcrd_crdtype.setSelection(cardtype);

Но он показывает ряд ошибок. 1. Измените на setSelected (..) 2. Измените тип карты на int

Заранее спасибо...


person Abhishek Dhiman    schedule 27.08.2012    source источник


Ответы (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>

макет: 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);
}

}
person Eldhose M Babu    schedule 27.08.2012