Невозможно получить значение нажатого элемента счетчика, вместо этого я получаю значение курсора - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть действие с четырьмя счетчиками, которые заполняются из базы данных. Вы можете выбрать атрибуты разных автомобилей. Допустим, мы можем выбрать марку, затем мощность в лошадиных силах и т. Д. Сначала я хотел проверить, получаю ли я значение, когда нажимаю на счетчик, но всегда получаю значение курсора вместо того, что нажимал на счетчик (например, Хонда, бмв). Я ищу пару дней, я также знаю, что мне нужно что-то вроде "getString ()" или / и "selectedItem". Но, к сожалению, я все еще не могу решить проблему. Я хотел бы, например, нажмите на элемент счетчика «Honda», и в сообщении о тосте должно появиться «Honda». Я надеюсь, что кто-то может показать мне, где я должен поставить необходимый код. Я попробовал это в пределах курсора и ниже. Вот мой код Спасибо: -)

public class ChooseCar extends Activity {

private Spinner BrandSpinner, HorsePowerSpinner, FuelSpinner, TireSpinner;
private Button btnSearch;
protected Cursor cursor;
protected ListAdapter adapter;
protected EditText searchText;
protected SQLiteDatabase db;

SQLiteDatabase myDB = null;
final static String MY_DATABASE_NAME = "car_directory";
final static String MY_DATABASE_TABLE = "cars";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.car_choice);

    LoadBrandSpinner();
    LoadHorsePowerSpinner();
    LoadFuelSpinner();
    LoadTireSpinner();
    addListenerOnButton();

}



public void LoadBrandSpinner(){
    myDB = this.openOrCreateDatabase(MY_DATABASE_NAME, MODE_PRIVATE, null);

    Cursor myCursor = myDB.rawQuery("SELECT _id, brand FROM " + MY_DATABASE_TABLE + ";", null);        
    startManagingCursor(myCursor);

    BrandSpinner = (Spinner)findViewById(R.id.spinner1);

    myCursor.moveToFirst();


   SimpleCursorAdapter spinadapter = new SimpleCursorAdapter(
            this,
            android.R.layout.simple_spinner_item,
            myCursor,
            new String[] {"brand"},
            new int[] {android.R.id.text1}); 

    spinadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    BrandSpinner.setAdapter(spinadapter);
    BrandSpinner.setPrompt(this.getResources().getString(R.string.ChooseBrand)); 
    BrandSpinner.setAdapter(spinadapter);
    BrandSpinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}


public void LoadHorsePowerSpinner(){// The same like the first spinner ;-)}

public void LoadFuelSpinner(){// The same like the first spinner ;-)}

public void LoadTireSpinner(){// The same like the first spinner ;-)}

public class MyOnItemSelectedListener implements OnItemSelectedListener {

public void onItemSelected(AdapterView<?> parent,
    View view, int pos, long id) {
  Toast.makeText(parent.getContext(), "The car is " +
      parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}

public void onNothingSelected(AdapterView parent) {
  // Do nothing.
}
}

public void addListenerOnButton() {

BrandSpinner = (Spinner) findViewById(R.id.spinner1);
HorsePowerSpinner = (Spinner) findViewById(R.id.spinner2);
FuelSpinner = (Spinner) findViewById(R.id.spinner3);
TireSpinner = (Spinner) findViewById(R.id.spinner4);

btnSearch = (Button) findViewById(R.id.searchButton);

btnSearch.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {

        Toast.makeText(ChooseCar.this,
                "OnClickListener : " + 
                "\nBrand : " +   String.valueOf(BrandSpinner.getSelectedItem()) +
                "\nHorsePower : " + String.valueOf(HorsePowerSpinner.getSelectedItem()) +
                "\nFuel : " + String.valueOf(FuelSpinner.getSelectedItem()) +
                "\nTire : " + String.valueOf(TireSpinner.getSelectedItem()),
                Toast.LENGTH_SHORT).show();
    }

});
}}

Ответы [ 2 ]

0 голосов
/ 10 августа 2016
    appCompatSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                    Toast.makeText(context, String.valueOf(((AppCompatTextView) view).getText()), Toast.LENGTH_LONG).show();
                }

                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
                    Toast.makeText(context, "NothingSelected!", Toast.LENGTH_SHORT).show();
                }
            });
0 голосов
/ 02 апреля 2012

Установка MyOnItemSelectedListener в качестве правильной OnItemSelectedListener счетчика.

В onItemSelected методе *1005* вы должны иметь возможность вызвать parent.getSelectedItem(), что дает вам Cursorобъект выбранной марки.

Получив Cursor, выполните

cursor.getString(cursor.getColumnIndex("brand"))

, чтобы получить марку автомобиля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...