2012-01-14 11 views
0

私はSpinnerがAndroidのSpinnerを使ってUSA州の配列を束縛するコードを書いた。しかし、問題はSpinner項目の参照型データを示しています。画像を参照してくださいAndroid:DropDownの設定方法Spinnerのリソースを表示しますか?

私はandroid.R.layout.simple_spinner_dropdown_itemを追加しますが、レイアウトに追加する内容は分かりません。私はgoogleで多くのexemplesをチェックして彼らはsimple_spinner_dropdown_itemを追加しますが、レイアウトに追加するものが見つかりませんでした。以下は出力とコードです。私は、この不気味なデータの代わりにリストに状態を表示したい。

enter image description here

Spinner spStates = new Spinner(this); 
     spStates.setLayoutParams(new LayoutParams(screenWidth, LayoutParams.WRAP_CONTENT)); 

     final USAStates states[] = new USAStates[51]; 

     states[0] = new USAStates("Alabama", "AL"); 
     states[1] = new USAStates("Alaska", "AK"); 
     states[2] = new USAStates("Arizona", "AZ"); 
ArrayAdapter<USAStates> adapter = new ArrayAdapter<USAStates>(this, android.R.layout.simple_spinner_item, states); 

     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spStates.setAdapter(adapter); 
     spStates.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       USAStates d = states[position]; 
       Toast.makeText(getApplicationContext(), d.getStateAbrivation(), Toast.LENGTH_LONG).show(); 

      } 

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




public class USAStates { 
     private String _Statename; 
     private String _StateAbrivation; 

     public USAStates(String pStatename, String pStateAbrivation) { 
      Statename(pStatename); 
      StateAbrivation(pStateAbrivation); 
     } 
     public void Statename(String pStatename) { 
      _Statename = pStatename; 
     } 
     public void StateAbrivation(String pStateAbrivation) { 
      _StateAbrivation = pStateAbrivation; 
     } 

     public String getStatename() { 
      return _Statename; 
     } 
     public String getStateAbrivation() { 
      return _StateAbrivation; 
     } 
    } 

答えて

2

わからないので、)(、ちょうど私の頭の上にこれをオフにやってますが、あなたのtoString method.AsをオーバーライドするあなたのUSAStateクラスではアダプタがデフォルトのtoStringを使用していることかもしれないです表示あなたの奇妙なテキスト例えば

@Override 
public String toString(){ 
return _Statename 
} 
0

私はもともと0を受け入れた(私は推測USAStatesクラスのクラス名です)答えても、これが正しいとは思われませんでした。

私は、スピナー/ドロップダウンリストを持つActionBarを持っていました。私のカスタムアダプタで設定したタイトルではなく、アダプタのアイテムがString.toString()の値で表示されていました。 toString()を追加すると、同じレイアウトで複合ドロアブルを設定しようとするまで、最初は修正されました。

アダプターでgetDropDownViewgetViewをオーバーライドする必要がありました。

toString()をオーバーライドする必要があることは、アダプタの正しいメソッドをオーバーライドしていないことを示します。

toString()をオーバーライドするgetDropDownViewをオーバーライドする必要がなくなり、すべて正常に動作します。

、次の記事に答えがスーパーメソッドを使用して実装するための素晴らしい方法です: alternating colors of spinner items

関連する問題