2011-07-26 6 views
1

複数の行を含むカスタムdropDownListを作成してデータベースから取り込むため、SimpleCursorAdapterを使用しています。私はこの作業をきちんとやり遂げましたが、私のレイアウト活動では、選択された行がスピナーに表示され、別のレイアウトにして、選択した行の最初の行だけを表示したいと思います。どうすればこれを達成できますか?ここでAndroid Spinner:カスタムアダプタディスプレイ

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コードです:

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

完全にサイドトピックで、自家製のこのアプリですか? :) –

答えて

0

私が何を求めていることBaseAdapterクラスのgetDropDownView()方法だと思います。

あなたの行ったことをnewViewメソッドで行い、1行表示用のレイアウトを提供します。

次に、newDropDownViewを実装して、複数の行を提供する別のレイアウトを拡張します。 ドロップダウンビューは、ユーザーがドロップダウンを選択したときに表示されるポップアップメニューに行を作成するために使用されます。

+0

新しく実装されたnewDropDownViewを含めるように質問を更新しましたが、エラーをスローします。私は実際にこれまで一度も運がなかったので、これを試しました。私はおそらく本当に簡単な何かが欠けているでしょう... – ryandlf

+1

それを考え出し、私の質問を更新しました。 newDropDownViewでオブジェクトをバインドし、そのオブジェクトをbindViewにバインドするときにnewViewでカスタムレイアウトを使用する必要がありました。 – ryandlf

+0

私は助けてくれると喜んで、あなたがエラーを出してうれしく思います。 – ToothlessRebel