2012-01-14 2 views
0

나는 스피너가 미국 안의 스피너 (Spinner)와 미국의 배열을 묶는 코드를 작성했다. 하지만 문제는 Spinner 항목에 참조 유형 데이터가 표시되어 있습니다. 그림을 참조하십시오.Android : Spinner 용 DropDown보기 리소스를 설정하는 방법?

android.R.layout.simple_spinner_dropdown_item을 추가했지만 레이아웃에 추가 할 내용을 모릅니다. 나는 많은 exemples을 google에서 확인했다. 그리고 그들은 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

내가 원래 공을 받아 (나는 가정 USAStates 클래스의 클래스 이름입니다)답변했지만이 사실이 옳지 않은 것으로 나타났습니다.

나는 스피너/드롭 다운 목록이있는 ActionBar가 있으며 어댑터 항목은 사용자 지정 어댑터에서 설정 한 제목 대신 String.toString() 값으로 렌더링됩니다. toString()을 추가하면 같은 레이아웃에서 복합 드로어 블을 설정하려고 시도 할 때까지 초기에 수정되었습니다.

내 어댑터에 getDropDownViewgetView을 무시해야했습니다.

toString()을 재정의하는 것이 어댑터의 올바른 메서드를 재정의하지 않은 것이 좋습니다.

toString()을 재정의해야하는 getDropDownView를 재정의 할 때 더 이상 필요하지 않으며 모든 것이 예상대로 작동합니다. alternating colors of spinner items

:

그리고 다음 게시물에 대답

슈퍼 방법을 사용하여 구현할 수있는 좋은 방법입니다