Android Custom Spinner - Какой полезный результат? - PullRequest
0 голосов
/ 09 августа 2010

У меня есть пользовательский счетчик (настроенный для форматирования).Работает нормально и показывает результат выбранного элемента массива.Массив строк с моими данными называется mydata [].

Я хочу что-то сделать с этим результатом - я пробовал несколько часов изменений, но, похоже, я не знаю, что это за контейнер для выбранногорезультат - он просто отображается автоматически.MNumber относится к выбранному регистру в классе (его результат основан на том, что было передано в него).

Мои вопросы - обратитесь к * ЧТО Я ИСПОЛЬЗУЮ ЗДЕСЬ * показано в последней строке кода:
1. Каков контейнер для результата?
2. Как получить к нему доступ и синтаксис?

Вот код:
Спасибо!

**[declared in onCreate]**  
    Spinner spinner = (Spinner) findViewById(R.id.Spinner01);    
    MySpinnerAdapter adapter = new MySpinnerAdapter(this, R.layout.mspinner, R.id.text,mydata);   
    spinner.setAdapter(adapter);  

**[declared outside of onCreate]**  
    @SuppressWarnings("unchecked")  
    private class MySpinnerAdapter extends ArrayAdapter{  
    public MySpinnerAdapter(Context context, int resource, int textViewResourceId, String[] objects) {  
    super(context, resource, textViewResourceId, objects);  
    final TextView woof =(TextView)findViewById(R.id.TextView07);  
    woof.setText(String.valueOf(dogday.mNumber(*** WHAT DO I USE HERE ? ***)));  
    }  
    }  

РЕДАКТИРОВАНИЕ - ДЛЯ МОЕГО ОТВЕТА НА ОБЩЕСТВО (слишком много символов дляполе для комментариев).

Спасибо.Вы знаете результат, который отображается в счетчике (по умолчанию), когда что-то выбрано - - это часть данных, которая мне нужна. Я хочу использовать ее в качестве аргумента для вызова.

Пользователь выбирает что-то в счетчике. Выбранный элемент будет использоваться для выбора в методе класса (dogDay), который принимает аргумент данных для mNumber ( data ) и возвращает результат (какфункция).

Я хочу сделать некоторые математические вычисления с результатом.Во-первых, я хочу отобразить то, что возвращается (пока), поэтому я использую dogDay.mNumber ( data ) в качестве аргумента для woof.text.

Myвопрос такой , как получить кусок данных ( вещь которую пользователь выбрал в Spinner )?Как спиннер узнал, что отображать для моего выбора - это то, что я хочу?Я пытался использовать что-то вроде getSelectedItem (или что-то еще - я не могу вспомнить только сейчас), но оно вылетает.

Является ли их более простым способом пользовательского форматирования счетчика? (и получить данные ) Я искал привет и низкий для информации и нашел только один применимый для Android 1.5 / более поздней версии (я хочу, чтобы спиннер с черным фоном и красным текстом - я могу сделать это способом, показанным вмой код с использованием пользовательского макета).

Спасибо - я немного запутался!

EDITED - с полным кодом Вот полный код с пользовательским счетчиком извонок, который вы предложили.Как я уже упоминал, я уже пробовал это - он показывает только первый элемент в списке - никогда не выбранный.Я использую результат getSelectedItem в качестве аргумента для строки ... Я попробовал его как внутри, так и снаружи адаптера ...

package com.bt.junk;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class MyMaincode extends Activity {
private static String mydata[] = {"one", "two", "three"};

int poop;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
// DECLARATIONS ------------------------------------------------       
    Spinner spinner = (Spinner) findViewById(R.id.Spinner01);

    MySpinnerAdapter adapter = new MySpinnerAdapter(
        this,R.layout.custom_spinner_row,R.id.text, mydata );

    spinner.setAdapter( adapter );

    poop = spinner.getSelectedItemPosition();

}//end onCreate ********************************************

// METHODS, CLASSES, etc ---------------------------------------
@SuppressWarnings("unchecked") //<-- I added that
private class MySpinnerAdapter extends ArrayAdapter{
    public MySpinnerAdapter(Context context, int resource,
                   int textViewResourceId, String[] objects) {
        super(context, resource, textViewResourceId, objects);                  

        final TextView sayWhat = (TextView) findViewById(
                                            R.id.TextView01);
        sayWhat.setText(String.valueOf(mydata[poop]));

    }//end MySpinnerAdapter
}//end class MySpinnerAdapter
}//end activity

1 Ответ

1 голос
/ 09 августа 2010

Ваш вопрос мало что значит для меня.Я предполагаю, что «я хочу что-то сделать с этим результатом» означает «я хочу узнать позицию выбранного элемента в массиве».Если это предположение верно, вы можете получить выбранную позицию для Spinner, вызвав getSelectedItemPosition().Это будет 0 при первом появлении Spinner, если вы сами не измените позицию.

Ваш код также очень странный, ИМХО.Конструктор ArrayAdapter не должен пытаться манипулировать виджетом.

...