0

挿入を検証したいときにスピナーの値を取得するのに問題があります。

これが私のスピナーを埋める方法です:

ArrayList<HashMap<String, String>> myArrayList;
myArrayList= new ArrayList<HashMap<String, String>>();
for (int i = 0; i < studentList.length(); i++) {
JSONObject c = studentList.getJSONObject(i);
String id = c.getString("id");
String name = c.getString("name");
HashMap<String, String> map = new HashMap<String, String>();
map.put("id", id);
map.put("name", name);
myArrayList.add(map);
}

以降 :

SpinnerAdapter studentAdapter = new SimpleAdapter(
MyActivity.this, myArrayList,
R.layout.student, new String[] { "id", "name"},
new int[] { R.id.id, R.id.name });
mySpinner.setAdapter(studentAdapter);

「OK」ボタンをクリックすると、スピナーの値が次のように表示されます。

mySpinner.getSelectedItem().toString();

私は得る:

{id = 2、name = Smith}

しかし、名前だけを取得する別の方法があると確信していますが、どうすればよいですか?スピナーでアダプターを入手することで?それは私の問題です...

ありがとうございました

4

3 に答える 3

0

が提供するオブジェクトはSpinnerHashMapです。そのようにキャストしてから、通常の方法で値を抽出します。

String studentName = ((HashMap)mySpinner.getSelectedItem()).get("name");

ArrayList<HashMap>別のオプション:を使用してデータを入力するのではなく、を使用するSpinnerことをお勧めします (既に自由に使用できるクラスであるとArrayList<Student>想定しています)。Student次に、現在選択されているオブジェクトをにキャストしてStudent、好きなように使用できます。

String studentName = ((Student)mySpinner.getSelectedItem()).name;
于 2013-03-08T21:28:03.630 に答える
0

名前だけを取得する別の方法があると確信していますが、どうすればよいですか?

OnItemSelectedListenerを使用できます。これは、常にユーザーの現在の選択を持ちます。

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
    // Do with name as you please
}

または、と同じ手法を使用してgetSelectedView()、検証後にのみ名前を取得することもできます。

于 2013-03-08T20:17:18.650 に答える
0
String data="{id=2, name=Smith}";//you retrieved 
String array[]=data.split("name=");//split in values of '**id=2,** ' and '**Smith**'
String name=array[array.length-1];  //take last value

名前変数に「Smith」が含まれます。好ましくないが、選択の余地がない場合はそれを使用する

于 2015-04-03T13:09:48.880 に答える