2017-06-15 1 views
-1

私がしようとしていることは次のとおりです。ArrayList<String>にデータを入力した後、スピナーにテキストを表示するのにString[]を使用していますので、私のデータArrayListは、デフォルトで何が置き換えられますか、何も起こりません。ArrayList <String>をString []に渡してSpinner内の値を表示するにはどうすればよいですか?

私はArrays.toString(せずにそれを表示しようとしている)、それは私に次のようになります:

[Ljava.lang.string;@e4b348 

しかしarrays.tostringと()欲しいものを手に入れます。

私の文字列[]内のデータArrayListをスピナーに表示するにはどうすればいいですか?

String prestationuserlist; 
ArrayList<String> textfordropdown2 = new ArrayList<>(); 
String[] textfordropdown = {"test", "test", "test","test", "test", "test","test", "test", "test","test", "test", "test","test", "test", "test","test", "test", "test"}; 
String[] valueofdropdowtext = {"test", "test", "test"}; 
Spinner spinnerdynamic; 


for(int i=0;i<arrSize;i++) { 
    object = prestationlist.getJSONObject(i); 
    // Here, we populate the array with value of json, each text and db value 
    textfordropdown2.add(object.getString("Text")); 
    valueofdropdown.add(object.getString("Value")); 
    valueofdropdowtext = valueofdropdown.toArray(new String[0]); 
    textfordropdown = textfordropdown2.toArray(new String [textfordropdown2.size()]); 

} 

マイスピナー:

//Start Create a spinner with different view and value. 
    spinnerdynamic = (Spinner)findViewById(R.id.dynamic_spinner); 
    ArrayAdapter<String> adapter1 = 
      new ArrayAdapter<String>(MainActivity.this, 
        android.R.layout.simple_spinner_item, textfordropdown);// Here we set the text with API return value. 
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// Here we create a dropdown list item. 
    spinnerdynamic.setAdapter(adapter1); 
    spinnerdynamic.setOnItemSelectedListener(onItemSelectedListener1); // Here we call the function which is getting the value according to selected text. 
    //End Create a spinner with different view and value. 
ここ

ですOnItemSelectedListener:あなたの助けのための

OnItemSelectedListener onItemSelectedListener1 = 
      new OnItemSelectedListener(){ 

       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, 
              int position, long id) { 
        prestationuserlist = valueofdropdowtext[position]; 
        test = textfordropdown[position]; 
       } 

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

おかげ

は、ここに私のコードです!

+1

あなたが直面している問題は何ですか?あなたの質問は明確ではありません。 – gprathour

+0

問題は、私の値 "test"がArrayListの値に置き換えられないということです。 textfordropdown2 –

+1

'ArrayList 'をアダプターに直接渡さないのはなぜですか?なぜあなたはそれを交換する必要がありますか? – gprathour

答えて

0

スピナーアダプタで使用する場合は、配列のarrayListを配列に変換する必要はありません。以下

を参照してくださいコード -

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

    // populate arraylist with data 
    ArrayList<String> spinnerArrayList = new ArrayList<>(); 
    for(int i=1; i<10; i++) 
    { 
     spinnerArrayList.add("Item " + i); 
    } 

    // create spinner adapter with the above arraylist 
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, spinnerArrayList); 
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    // attach adapter to spinner 
    spinner.setAdapter(dataAdapter); 

これは私が得るものです -

enter image description here

+0

はい、しかし、私は別の表示と値を持っている私のドロップダウンに私はこのように行うことはできません治療をしているので、私は私のテキストを取得する配列を渡すが、その後値はもう設定されていない私は値を取得しますが、テキストを表示することはできません:/ –

+0

この場合、arraylistを使用して "表示値"と "表示値+実際値"をキー値のペアとして保存するハッシュマップを使用できます。このような何かを使ってHashmapを使って実際の値を得ることができます - for(Map.Entry entry:hash.entrySet()){ String displayedValue = entry.getKey(); 文字列actualValue = entry.getKey(); //実際の値を使用 } –

+0

キーのテキストと値の値を保存するには、BeanまたはHashMapを使用します。 – lihongxu

0

配列

String[] textfordropdown = arrayList.toArray(); 

にコンバートArrayListのためにこれを試してみて、その後にそれを設定しますそのようなスピナーは

関連する問題