2010-12-08 4 views
6

私はAndroid開発の初心者です。私はSimpleAdapterを使用してスピンを作成しようとしています。しかし、スピナーのリストは空白の要素を示しています。要素をクリックすると、そのテキストがToastに正しく表示されます。下記の私のコードで何が問題なのか教えてください。SimpleAdapterをSpinnerで使用する

public void onCreate(Bundle savedInstanceState) { 

    private List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 

    String[] from = new String[] { "colorsData" }; 
    int[] to = new int[] { R.id.spinner }; 

    String[] colors = getResources().getStringArray(R.array.colorsData); 

    for (int i = 0; i < colors.length; i++) { 
    data.add(addData(colors[i])); 
    } 

    Spinner spinner = (Spinner) findViewById(R.id.spinner); 

    SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, android.R.layout.simple_spinner_item, from, to); 
    simpleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(simpleAdapter); 

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, 
    int position, long id) { 
    Toast.makeText(
     parent.getContext(), 
     "Selected Color:- " 
     + parent.getItemAtPosition(position), 
     Toast.LENGTH_LONG).show(); 
    } 
    }); 
} 

private Map<String, String> addData(String colorName) { 
    Map<String, String> mapList = new HashMap<String, String>(); 
    mapList.put("colorsData", colorName); 
    return mapList; 
} 
+0

あなたの質問を一見して、私はあなたが本当に得たいとは思っていません。しかし、もしあなたがアンドロイドで設定ページのようないくつかのUI要素を望むなら。すなわち、リストビュー内の項目をクリックして何かを選択するためのダイアログをポップすると、「嗜好」を試すことができます。設定は、アプリを設定するための一連のUI要素です。 –

答えて

5

私はあなたのto配列として宣言する必要があることを約95%確信している:

int[] to = new int[] { android.R.id.text1 }; 

は試してみることを与えます。 (下記のコメントに基づいて)


EDITは:

IllegalStateExceptionが発生していることAndroidOSの古いバージョンにバグがあったようです。 (私は2.2で例外は見られませんでしたが、私は1.5でエミュレータでそれを見ました)。SimpleAdapterにViewBinderを追加することでバグを回避できます。 ViewBinderは実装するのが難しくありません。ここに例があります:

私はこの約hereをブログしました。

+0

私はそれを試した。しかし、スピナードロップダウンボタンをクリックするとすぐに、IllegalStateExceptionが発生してクラッシュしています。 – Chromium

+0

あなたは実際にテキストラベルを実際に見ていますか?その例外は、あなたがアダプタを作成した後に 'data'リストで何か変更されたことを意味します。それは可能ですか? –

+0

いいえ、私はデータリストを変更しません。 SimpleAdapterを使用してスピナーを挿入することができるかどうか疑問に思っています。 – Chromium

関連する問題