2011-07-26 4 views
1

여러 개의 행을 포함하는 사용자 정의 dropDownList를 만들어 내 데이터베이스에서 채울 수 있기 때문에 SimpleCursorAdapter를 사용하고 있습니다. 이 작업을 아주 잘 수행했지만, 레이아웃 활동에서 스피너가 선택된 행을 표시하고 선택한 행의 첫 번째 행만 표시하도록 별도의 레이아웃을 갖고 싶습니다. 이것을 어떻게 할 수 있습니까?Android Spinner : 맞춤 어댑터 디스플레이

public class GrainSpinnerAdapter extends SimpleCursorAdapter { 

    private Context myContext; 

    public GrainSpinnerAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { 
     super(context, layout, c, from, to); 
     myContext = context; 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     super.bindView(view, context, cursor); 

     int nameColumn = cursor.getColumnIndex("name"); 
     String getName = cursor.getString(nameColumn); 
     TextView name = (TextView)view.findViewById(R.id.GrainSpinnerName); 
     name.setText(getName); 

    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     super.newView(context, cursor, parent); 
     View view = View.inflate(context, R.layout.grain_spinner, null); 
     return view; 
    } 

    @Override 
    public View newDropDownView(Context context, Cursor cursor, ViewGroup parent) { 
     super.newDropDownView(context, cursor, parent); 

     View view = View.inflate(context, R.layout.grain_spinner_row, null); 
     int nameColumn = cursor.getColumnIndex("name"); 
     String getName = cursor.getString(nameColumn); 
     TextView name = (TextView)view.findViewById(R.id.GrainSpinnerName); 
     name.setText(getName); 

     int loviColumn = cursor.getColumnIndex("lovibond"); 
     String getLovi = cursor.getString(loviColumn); 
     TextView lovi = (TextView)view.findViewById(R.id.GrainSpinnerLovibond); 
     lovi.setText(getLovi); 

     int gravityColumn = cursor.getColumnIndex("gravity"); 
     String getGravity = cursor.getString(gravityColumn); 
     TextView gravity = (TextView)view.findViewById(R.id.GrainSpinnerGravity); 
     gravity.setText(getGravity); 

     return view; 
    } 
+1

완전하게 측면 주제에, homebrewing이 응용 프로그램입니까? :) –

답변

0

내가 무엇을 요구하는 것은 BaseAdapter 클래스의 getDropDownView() 방법이라고 생각 :

String fields[] = {"name", "lovibond", "gravity"}; 
    nameAdapter = new GrainSpinnerAdapter(this, R.layout.grain_spinner_row, data, fields, new int[] { R.id.GrainSpinnerName, R.id.GrainSpinnerLovibond, R.id.GrainSpinnerGravity }); 
    nameSpinner.setAdapter(nameAdapter); 

여기 내 SimpleCursorAdapter 코드입니다.

newView 메소드에서 수행 한 작업을 수행하고 단일 행 디스플레이 레이아웃을 제공하십시오.

그런 다음 newDropDownView를 구현하여 여러 줄을 제공하는 다른 레이아웃을 확장합니다. 드롭 다운보기는 사용자가 드롭 다운을 선택할 때 제공되는 팝업 메뉴에서 행을 만드는 데 사용됩니다.

+0

새로 구현 된 newDropDownView를 포함하도록 내 질문을 업데이트했지만 오류가 발생했습니다. 나는 운 좋게도 실제로 한번 이것을 시도했다. 나는 아마도 정말로 간단한 것을 놓치고있을 것입니다 ... – ryandlf

+1

그것을 알아 내고 내 질문을 업데이트했습니다. newDropDownView에서 객체를 바인딩하고 bindView에서 객체를 바인딩하는 동안 newView에서 사용자 정의 레이아웃을 사용해야했습니다. – ryandlf

+0

다행 니가 도울 수있어서 기쁘다. 너희는 잘못 했어. – ToothlessRebel