Android Spinner: настраиваемый дисплей адаптера - PullRequest
1 голос
/ 26 июля 2011

Я использую SimpleCursorAdapter на моем счетчике, потому что я хочу создать собственный dropDownList, который содержит несколько строк, и заполнить его из моей базы данных. Я выполнил эту задачу довольно хорошо, но в моей работе с макетом счетчик показывает выбранные строки, и я хотел бы, чтобы он имел отдельный макет, чтобы он отображал только первую строку выбранной строки. Как мне это сделать?

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 голосов
/ 26 июля 2011

Я думаю, что вы спрашиваете, это getDropDownView() метод BaseAdapter класса.

В вашем методе newView сделайте то, что вы сделали, и предоставьте макет для однорядных дисплеев.

Затем реализуйте newDropDownView, чтобы накачать другой макет, который предусматривает несколько строк. Представления раскрывающегося списка используются для создания строк во всплывающем меню, которое предоставляется, когда пользователь выбирает раскрывающийся список.

...