как 2 одинаковых спиннера зависят друг от друга, выбор одного блесна скрывает это значение во втором блесне

java android xml

394 просмотра

2 ответа

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

Помогите мне, как управлять этими двумя вращателями, например, выбрать один элемент (название города) в первом счетчике, чтобы скрыть этот элемент во втором счетчике.

Автор: ayesha rana Источник Размещён: 08.11.2019 11:20

Ответы (2)


0 плюса

Решение

Это то, что я сделал для моего listView ... это также должно работать для счетчика Я немного изменил его для счетчика

ArrayAdapter<String> arrayAdapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,yourArray);

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, yourArray);

arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner1.setAdapter(arrayAdapter);

arrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner2.setAdapter(arrayAdapter2);

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
        //remove the selected item from other adapter
        arrayAdapter2.remove(arrayAdapter.getItem(position));
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
});

То же самое можно сделать с другим адаптером

Автор: Shubham Chauhan Размещён: 20.08.2016 01:31

0 плюса

Если вы хотите удалить этот конкретный элемент позиции, то вы можете сделать, как показано ниже:

object t=m_adapterForSpinner.getitem(pos);//whr m_arrayadapter is array adapter using for filling spinner

затем удалите элемент из адаптера, как это

m_adapterForSpinner.remove((CharSequence) t);

затем снова наполните счетчик с помощью адаптера.

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

public class CustomAdapter extends ArrayAdapter<String> {

 private int hidingItemIndex;

 public CustomAdapter(Context context, int textViewResourceId, String[] objects, int hidingItemIndex) {
     super(context, textViewResourceId, objects);
     this.hidingItemIndex = hidingItemIndex;
 }

 @Override
 public View getDropDownView(int position, View convertView, ViewGroup parent) {
     View v = null;
     if (position == hidingItemIndex) {
         TextView tv = new TextView(getContext());
         tv.setVisibility(View.GONE);
         v = tv;
     } else {
         v = super.getDropDownView(position, null, parent);
     }
     return v;
 }
 }

Используйте как ниже:

int hidingItemIndex = 0;

CustomAdapter dataAdapter = new CustomAdapter(this, android.R.layout.simple_spinner_item, list, hidingItemIndex);

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(dataAdapter);
Автор: Vishal Thakkar Размещён: 20.08.2016 01:22
Вопросы из категории :
32x32