Android - как мне разделить слушателя между счетчиком и переключателем?

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

Есть ли лучший или более простой способ разделить слушателя между различными предметами разных сортов?

РЕДАКТИРОВАТЬ. Я должен был упомянуть, что причина, по которой я хочу поделиться слушателем, заключается в том, что мне нужно использовать различные адаптеры, которые у меня возникают проблемы с использованием в других классах.


person KRL    schedule 07.10.2011    source источник


Ответы (3)


Вы можете определить класс, который реализует прослушиватель как для Spinner, так и для переключателя,

создайте один экземпляр класса, а затем назначьте этот экземпляр как переключателю, так и счетчику. Например:

package italialinux.example;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.TextView;


public class ButtonAction implements OnClickListener, OnItemSelectedListener {

    TextView btnLocalText;

    public ButtonAction(TextView tv) {
        super();
        btnLocalText = tv;
    }

    @Override
    public void onClick(View arg0) {
        btnLocalText.setText("Hello from a ButtonAction!!");
    }

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

}
person Ivan    schedule 07.10.2011
comment
Проблема в том, что мне нужно использовать различные адаптеры, которые я не могу использовать в других классах. - person KRL; 07.10.2011
comment
Фантастический пример, который вы добавили туда, спасибо. Для других, таких же неумелых, как я, это то, что нужно добавить к вашим кнопкам/вращателям/разным, чтобы вызвать класс; clr.setOnClickListener(new ButtonAction('независимо от значения')); - person KRL; 07.10.2011

Если вы хотите, чтобы они выполняли одну и ту же функцию по клику, просто добавьте один и тот же экземпляр списка в методе setOnClickListener() для каждого представления/виджета. Если нет, вам придется определить, какое представление было нажато, и выполнить соответствующее действие.

person devanshu_kaushik    schedule 07.10.2011

я думаю, что приведенный ниже пример кода - это то, что вы ищете

//the import for onClickListener you need is here (along with other imports --- you can get all of them by pressing ctrl+shift+o on Eclips IDE)

импортировать android.view.View.OnClickListener;

открытый класс MyActivity расширяет Activity, реализует OnClickListener {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Button myButton = (Button) findViewById(R.id.myButtonId);
    ImageView myImageView = (ImageView) findViewById(R.id.myImageViewId);
    RadioButton myRadioButton = (RadioButton) findViewById(R.id.myRadioButtonId);
    CheckBox myCheckBox = (CheckBox) findViewById(R.id.myCheckBoxId);

    myButton.setOnClickListener(this);
    myImageView.setOnClickListener(this);
    myRadioButton.setOnClickListener(this);
    myCheckBox.setOnClickListener(this);

}

public void onClick(View view) {

    switch (view.getId()) {

    case R.id.myButtonId:
        // do the work here for Button click listener
        break;

    case R.id.myImageViewId:
        // do the work here for Image click listener
        break;

    case R.id.myRadioButtonId:
        // do the work here for RadioButton click listener
        break;

    case R.id.myCheckBoxId:
        // do the work here for CheckBox click listener
        break;

    }

}

}

person Umar Qureshi    schedule 07.10.2011
comment
К сожалению, это просто крашит мою программу. Спасибо за попытку! - person KRL; 07.10.2011