2016-10-25 8 views
0

私はスピナーを下のコードから読み込んでいます。ユーザーがspinnerから任意の値を選択すると、sqliteにstateCodeIdを保存します。今私が望むのは、ユーザが再び来たときに、すでにsqliteに保存されているIDから選択された値を表示したいということです。スピナーで選択した値を表示するにはどうすればよいですか?SimpleAdapterでスピナーの選択を設定するには?

public void fillStateData() { 
     try { 
      State_data = new ArrayList<Map<String, String>>(); 
      State_data.clear(); 
      Cursor cursor_State = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nCtgId = 6", null); 

      int i = 0; 
      if (cursor_State.moveToFirst()) { 
       do { 
        Map<String, String> datanum = new HashMap<String, String>(); 
        if (i == 0) { 
         datanum.put("nStateID", "0"); 
         datanum.put("cStateName", "Select State"); 
         State_data.add(datanum); 

         datanum = new HashMap<String, String>(); 
         datanum.put("nStateID", cursor_State.getString(0)); 
         datanum.put("cStateName", cursor_State.getString(1)); 
         State_data.add(datanum); 
        } else { 
         datanum.put("nStateID", cursor_State.getString(0)); 
         datanum.put("cStateName", cursor_State.getString(1)); 
         State_data.add(datanum); 
        } 
        i += 1; 
       } while (cursor_State.moveToNext()); 

      } 
      String[] fromwhere = {"nStateID", "cStateName"}; 
      int[] viewswhere = {R.id.txtnStateID, R.id.txtcStateName}; 
      StateAdapter = new SimpleAdapter(getActivity(), State_data, R.layout.state_list_template, fromwhere, viewswhere); 
      spnState.setAdapter(StateAdapter); 
      cursor_State.close(); 
      spnState.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

        TextView stateId = (TextView) view.findViewById(R.id.txtnStateID); 
        stateCodeId = stateId.getText().toString(); 

        fillDistrictData(stateCodeId); 
       } 

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

       } 
      }); 
     } catch (Exception e) { 

      e.printStackTrace(); 

     } 
    } 

このように私はsqliteからIDを取得しています。

Cursor c = db.rawQuery("SELECT nStateId from MemberMaster where nCustID ="+SesPMbrID+"", null); 

     c.moveToFirst(); 
     String state = c.getString(0); 
+0

まず、DBからIDを取得し、すべてのIDのリストにDBからIDと一致する必要があります。最後に、あなたがIDのリストを見つけたら、その位置とユーザに注意してください。spinner.setSelectio(position);ストアDB IDにスピナーを設定します。 – Shane

+0

このエラーが発生しました - java.lang.IndexOutOfBoundsException:無効なインデックス9、サイズが5 –

+0

これは、DBに5個のIDが含まれていて、リストにない9個を検索していることを示しています。 – Shane

答えて

0

使用

spinner.setSelection(position); 
+0

ありがとうFrancois L.私はsqliteから2つの列を移入しています。 ID列は非表示で、名前のみが表示されます。私はsqliteのIDを保存して、再度保存されたIDを取得しています。今私はidから選択したアイテムを表示したい。 –

関連する問題