// Adapter for Spinner ArrayAdapter<String> SPpartAdapter; SimpleCursorAdapter SPexerAdapter;
//Cursor for Database
DBHandler dbhandler;
Cursor exerCursor;
public static final String[] parts = {"가슴", "어깨", "등", "복부", "이두", "삼두", "하체"};
.. .. ..
// SPpart
SPpartAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, parts);
SPpart.setAdapter(SPpartAdapter);
SPpartAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Log.d("onCreate_Spinner", "Part Spinner Complete");
// SPexercise (from DB)
exerCursor = dbhandler.selectAll(SPpart.getSelectedItem().toString());
startManagingCursor(exerCursor);
exerCursor.moveToFirst();
SPexerAdapter = new SimpleCursorAdapter(this, R.layout.list_row, exerCursor, new String[] {"exercise"}, new int[] {R.id.text1} );
SPexercise.setAdapter(SPexerAdapter);
SPexerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Log.d("onCreate_Spinner", "Exercise Spinner Complete");
simpleCursorAdapter를 사용하여 Spinner와 bind시켰는데 다른건 다 정상인데 목록이 표시되지 않네요
액티비티 상의 두개의 Spinner가 사용되는데,
하나는 단순히 코드 상의 String 배열을 위 사진 처럼 Array Adapter를 이용하고
나머지 하나는 db상에서 한 col을 가져와 simpleCursorAdapter를 이용하여 bind합니다.
전자의 것을 목록의 잘 출력되는데 후자는 목록이 출력이 안되네요 ㅠㅠ
다만 목록상의 항목의 개수는 db상에서 개수와 일치합니다.
또 선택된 하나의 아이템은 표시가 됩니다.
android.R.layout.simple_spinner_dropdown_item 을 사용하면 안되나 싶어서 레아아웃을 새로 정의 해 봤는데도 안되더라구요 ㅠㅠ
조언주시면 감사하겠습니다 ㅠㅠ
(list_row.xml 코드 추가 / 2012.01.11.09:24)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text1"
android:textSize="15dp"
android:textColor="#ff0000"
android:singleLine="true"
android:ellipsize="none"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

그 방법도 해 보았으나 아니었습니다 ㅠㅠ 선택된 하나의 개체에 대해서는 잘 적용되는데 리스트상에는 아무 변화가 없습니다
아래 list_row.xml도 추가합니다.
해결했습니다. 스피너에서 사용되는 두 레이아웃의 reference Id가 같은 값을 사용해햐 하는 것 같습니다.
일단 최초에 한 해결방법은 커서 생성자 내부의 parameter에서
R.layout.list_row 를 android.R.layout.simple_spinner_dropdown_item로
R.id.text1를 android.R.layout.text1으로 고치고
setDropDownViewResource메소드에는 그대로 android.R.layout.simple_spinner_dropdown_item를 사용하니
정상적으로 출력되었습니다.
( 관련 url : http://stackoverflow.com/questions/7648684/android-spinner-shows-empty-values )
그리고 레이아웃을 커스텀할 시에는 두 레이아웃 모두 android:id="@+id/text1" 로 주고 (혹은 하나는 @+id 나머지는 @id )
reference Id값을 R.id.text1로 같은 값을 사용해야 스피너에 적용되는 것 같습니다.
xml에 대한 기초지식부족으로 생긴 실수였습니다!
답변해주신 그냥가자님과 혹 함께 고민해 주신 분 계시면 감사합니다!!




그냥 글자색이 흰색으로 들어간듯한데요....
R.layout.list_row 에서 텍스트 들어가는 부분에 글자색 검은색으로 줘보세요