2016-10-02 4 views
0

JSONのデータをPHPから解析し、Spinnerに表示しました。データにはKey-Valueが付属しています。だから私はSimpleAdapterと一緒にHashmapを使った。 Spinnerは値のみを表示します。ユーザーが項目を選択すると、キーはMySQLに格納されます。Androidアダプタのデフォルト値は、単純なアダプタのSpinnerのHashmap Keyから

これは、私のJSON。例えば

{ 
    "32":"Western Food", 
    "33":"Chinese Food", 
    "34":"Mix Food", 
    "35":"Japanese Food", 
    "36":"Korean Food", 
    "37":"Italian Food", 
    "38":"German Food", 
    "45":"Muslim food ", 
    "46":"Indian food" 
} 

活動

ユーザーが、彼らは "ミックス食" を選択した新しいカテゴリを追加します。送信ボタンをクリックすると、キー "34"がデータベースに保存されます。

image

アクティビティBスピナーは、開始時に示したときにアクティビティBのデフォルトとしてこの項目を表示する方法

int get_selected_item_id=34; 

List<HashMap<String, String>> category_arraylist = new ArrayList<HashMap<String, String>>(); 
Iterator<String> iterator = jsonObject1.keys(); 
    while (iterator.hasNext()) { 

     String id = iterator.next(); 
     String name=jsonObject1.getString(id); 
     HashMap<String, String> map = new HashMap<>(); 
     map.put("id",id); 
     map.put("name",name); 
     category_arraylist.add(map); 

    } 

    String[] from = {"name"}; 
    int[] to = {android.R.id.text1}; 
    final SimpleAdapter adapter = new SimpleAdapter(item_edit.this, category_arraylist, android.R.layout.simple_spinner_dropdown_item, from, to); 
    category.setAdapter(adapter); 

    category.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      category.setSelection(get_selected_item_id); // doesn't work 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 

     } 
    }); 

+0

デフォルト項目を設定するためにスピナーに '' setSelection(インデックス)を使用。 –

+0

@KNeerajLalそれはタイプミスです。私はそれを変更しました。私のシナリオの考え方は? – gosulove

答えて

2

のインデックスを検索Spinner

final ArrayAdapter<Item> adapter = new ArrayAdapter<Item>(this, android.R.layout.simple_spinner_dropdown_item, list); 
category.setAdapter(adapter); 

を初期化し

List<Item> list = new ArrayList<>(); 
Iterator<String> iterator = jsonObject1.keys(); 
while (iterator.hasNext()) { 
    String id = iterator.next(); 
    String name = jsonObject1.getString(id); 
    list.add(new Item(id, name)); 
} 

、このモデルクラスにデータを解析し、あなたのJSONデータの

private class Item { 
    String key; 
    String value; 

    public Item(String key, String value) { 
     this.key = key; 
     this.value = value; 
    } 

    public String getKey() { 
     return key; 
    } 

    public void setKey(String key) { 
     this.key = key; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    @Override 
    public String toString() { 
     return value; 
    } 
} 

をモデルクラスを作成します。あなたのget_selected_item_idlistになりますe setSelectionメソッドSpinnerをデフォルトとして設定します。

int index = findIndexOf(list, get_selected_item_id); 
if (index != -1) { 
    category.setSelection(index); 
} 

findIndexOf方法、

private int findIndexOf(List<Item> list, int selectedKey) { 
    for (int i = 0; i < list.size(); i++) { 
     if (list.get(i).getKey().equals(String.valueOf(selectedKey))) { 
      return i; 
     } 
    } 
    return -1; 
} 
ItemSelectedListener

category.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) { 
     // get selected item using position argument 
     Item selectedItem = list.get(position); 
     // your code 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 

    } 
}); 
関連する問題