Android - как я могу разделить слушателя между счетчиком и переключателем? - PullRequest
0 голосов
/ 07 октября 2011

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

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

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

Ответы [ 3 ]

3 голосов
/ 07 октября 2011

Вы можете определить класс, который реализует слушатель как для 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

    }

}
0 голосов
/ 07 октября 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)

import 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;

    }

}

}

0 голосов
/ 07 октября 2011

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

...