Раскрывающийся список "Закрыть счетчики" при одновременном нажатии двух из всех в групповом представлении

У меня есть несколько выпадающих (Spinners) в моей Android ViewGroup.

Когда я пытаюсь щелкнуть два из них одновременно, они оба открываются. Однако в Android по умолчанию существует поведение, согласно которому, если спиннер "открыт" и вы где-то щелкаете, он закрывается: Ничто, выбранное в слушателе, не вызывается в Item Selected Listener.

Я хочу, чтобы при одновременном нажатии на оба Spinners ни один из них не открылся. Однако при одном выборе (только один Spinner) он должен работать правильно.

1 ответ

Скажем, есть два счетчика, примените на слушателя касание на обоих. или getView() в адаптере достаточно (не getDropDownView), но тогда вы хотите обрабатывать их в одном и том же пространстве.

@Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        // Toast.makeText(getActivity(), v + " touched",
        // Toast.LENGTH_LONG).show();

        try {
            ActionBarActivity context = (ActionBarActivity) getActivity();
            if (context == null) {
                // Log.d(tag, "OnTouch spinner context: " + context);
                return false;
            }
            if (main_layout == null) {
                return false;
            }
            int i = v.getId();
            switch (i) {
            case R.id.spinner1: {
                Spinner spnTemp = null;
                spnTemp = (Spinner) main_layout.findViewById(R.id.spinner2);

                if (spnTemp != null) {
                    // spnTemp.setSelected(false);
//                  Log.d(tag, "OnTouch spinner spnTemp.isPressed(): " + spnTemp.isPressed());
                    if (spnTemp.isPressed()) {
                        spnTemp.setPressed(false);
                    }
                }
            }
                break;
            case R.id.spinner2: {
                Spinner spnTemp = null;
                spnTemp = (Spinner) main_layout.findViewById(R.id.spinner1);
                if (spnTemp != null) {
                    // spnTemp.setSelected(false);
//                  Log.d(tag, "OnTouch spinner spnTemp.isPressed(): " + spnTemp.isPressed());
                    if (spnTemp.isPressed()) {
                        spnTemp.setPressed(false);
                    }
                }
            }
                break;
            }
        } catch (Exception e) {
            Log.e(tag, "OnTouch spinner exception");
        }
        return false;
    }
Другие вопросы по тегам