如何通过多个视图调用“ setOnClickListener”方法?

时间:2019-01-09 16:46:33

标签: java android

我的Textviews页中有多个activity_main.xml。 我只声明了一个OnClickListener用于所有Textview,如下所示:

public class NumbersClickListener implements View.OnClickListener {
    String text = "";


    @Override
   public void onClick(View view){
        Toast.makeText(view.getContext(),"Hi", Toast.LENGTH_SHORT).show();
   }
}

然后,我想从多个视图调用此方法。如下代码:

TextView textview1 = (TextView) findViewById(R.id.textview1);
textview1 .setOnClickListener(clickListener);
TextView textview1 = (TextView) findViewById(R.id.textview2);
textview2 .setOnClickListener(clickListener);

那么如何为不同的视图制作不同的Toast?

2 个答案:

答案 0 :(得分:4)

您可以找到通过onClick(View view)方法单击的当前视图,

     @Override
     public void onClick(View view){

        if(view.getId() == R.id.textView1){
            Toast.makeText(view.getContext(),"Hi First", Toast.LENGTH_SHORT).show();
        }

        else if(view.getId() == R.id.textView2){
            Toast.makeText(view.getContext(),"Hi Second", Toast.LENGTH_SHORT).show();
        }
    }

答案 1 :(得分:1)

您可以使活动实现View.OnClickListener界面并覆盖onClick()

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    .....................
    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.textview1:
                 // 
                 break;
            case R.id.textview1:
                 // 
                 break;
    }
}

对于每个视图,您都可以这样设置侦听器:

textview1.setOnClickListener(this);

另一种方法是定义自定义侦听器:

View.OnClickListener myCustomLIstener = new View.OnClickListener() {
    public void onClick(View v) {
       switch(v.getId()) {
           case R.id.view1:
               // 
               break;
           case R.id.view2:
               // 
               break;
    }
};

并设置它:

textview1.setOnClickListener(myCustomLIstener);