Выпадающий список и БД (java android)

606
24 апреля 2017, 02:34

Здравствуйте. Имеется выпадающий список(spinner) данные в этом выпадающем списке берутся из базы данных. Вопрос, как при нажатии по любому элементу из выпадающего списка получить его поля id из базы данных. P.s если что, то БД реализована с помощью sugar orm.

Код:

package com.example.andrei.tetsbd;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import static android.R.attr.author;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView texthello = (TextView) findViewById(R.id.hello);
        //Запись в БД 
        Year_inv Year = new Year_inv("03.02.2017");
        Year.save();

       //Получение id из бд и вывод его на экран через textView(ради теста)
       List<Year_inv> year_inv = Year_inv.findWithQuery(Year_inv.class, "Select ID from Yearinv where date = ?", "03.02.2017");
        String adasdasdasd = "";
        adasdasdasd += year_inv;
        texthello.setText(adasdasdasd);
    }

        //Получение данных из БД и занесение в массив "test"
        final ArrayList test= new ArrayList();
        for (int i = 0; i < years.size(); i++) {
            Year_inv date = years.get(i);
            test.add(date.date + "\n");
        }
        //Реализация выпадающего списка и заполнение его данными из БД
        Spinner spin = (Spinner)findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, test);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(adapter);
    }
}
Answer 1

Как я понимаю у вас будет чтот в роде ArrayList<Ваш класс>. Вам нужно просто по выбранному полю заполнить отдельный string-array, и использовать в качестве адаптера. И при нажатия по списку, вы будете знать какой элемент выбран по номеру.

String[] statistika_string;           
         spinner_statistika = (Spinner) view.findViewById(R.id.spinner_statistika);
                    // адаптер
                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, statistika_string);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinner_statistika.setAdapter(adapter);
                    // выделяем элемент
                    spinner_statistika.setSelection(0);
                    spinner_statistika.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> adapte
    rView, View view, int i, long l) {
                // Your code here
                 int n = spinner_statistika.getSelectedItemPosition(); //получаю позицию
                }
        public void onNothingSelected(AdapterView<?> adapterView) {
                return;
                }
                });
READ ALSO
Работа приложения в фоне

Работа приложения в фоне

Каким образом можно осуществить фоновой режим работы приложения, чтобы оно отслеживало текущую дату, и выводило уведомления? Даже если оно...

262
Определение первого символа

Определение первого символа

Есть кодВ метод передается массив слов String

256
Крестики-нолики на java

Крестики-нолики на java

Пишу первую игру на JavaС помощью GridLayout создал поле 3 на 3, массив String со значениями O и X

278