Как исправить выбор Android Spinner, если он не работает? - PullRequest
0 голосов
/ 16 апреля 2019

Android Spinner не работает, API работает, и список элементов Spinner работает. Однако выбор элемента не работает.

class PlayerSignup2Activity : AppCompatActivity() {

    private lateinit var positions : List<Position>

    val positionSpinner = positionsSpinner

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(com.example.app.R.layout.activity_user_signup2)

        //Positions from API
        positions = APIService.getPositions(this)

        val spinnerAdapter = ArrayAdapter(this, R.layout.spinner_item, positions)
        spinnerAdapter.setDropDownViewResource(R.layout.spinner_item)
        positionSpinner.adapter = spinnerAdapter

    }

Список прядильщиков Spinner List

После выбора любого предмета

After selecting an item from the list

Есть идеи, как это исправить?!

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Попробуйте с этим

<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

В Котлине

class MainActivity : /** Other Classes, */AdapterView.OnItemSelectedListener {

var list_of_items = arrayOf("Item 1", "Item 2", "Item 3")

override fun onCreate(savedInstanceState: Bundle?) {
    spinner!!.setOnItemSelectedListener(this)

    // Create an ArrayAdapter using a simple spinner layout and languages array
    val aa = ArrayAdapter(this, android.R.layout.simple_spinner_item, list_of_items)
    // Set layout to use when the list of choices appear
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    // Set Adapter to Spinner
    spinner!!.setAdapter(aa)
}

override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id:Long{
    // use position to know the selected item
    //here you will get the answwer
}

override fun onNothingSelected(arg0: AdapterView<*>) {

}
}
0 голосов
/ 16 апреля 2019

попробуйте использовать prompt для добавления заголовка в. XML файл

<Spinner
          android:id="@+id/spinner"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:prompt="@string/spinner_title"/>

или попробуйте добавить еще 1 элемент, который содержит любой заголовок, который вы хотите, например, «выбрать позицию» в индексе 0.

positions.add("select position");
positions.add("value 1");

после добавления значений в список установите значение счетчика в индекс 0 по умолчанию, используя приведенный ниже код.mSpinner.setSelection(0).

и при Item Selected проверьте, является ли индекс 0 или значение «выбранной позицией», тогда игнорируйте выбор, иначе выполните желаемое действие.

 private lateinit var positions : List<Position>


        //add dummy data first
        positions.add(Position("select position"));

        //Positions from API
        positions.addAll(APIService.getPositions(this));
...