为TextView创建开关案例onClickListener

时间:2014-10-24 10:16:20

标签: java android textview onclicklistener

我刚刚开始使用Java编程,并且在为可点击的TextView实现OnClickListener开关案例时遇到了一些麻烦。我已经设法为菜单项做了一个开关案例,但我显然不能理解它足以构成更一般的案例。

这是我的代码中对它很重要的部分

public class MyActivity extends Activity implements SensorEventListener {
TextView tv, tv1, tv2, tv3;

@Override
public void onCreate(Bundle savedInstanceState) {
//get textviews
    tv = (TextView) findViewById(R.id.xval);
    tv1 = (TextView) findViewById(R.id.yval);
    tv2 = (TextView) findViewById(R.id.zval);
    tv3 = (TextView) findViewById(R.id.scalar);

然后我为每个TextView设置了单独的点击监听器,例如

tv1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Do things
            }
        }
    });

但是我正在尝试设置它,所以我有一个组合的OnClickListener,如:

@Override
public boolean onClickListener (View v) {
    switch (tv.findViewById()) {
        case tv:
            //Do things
            return true;
        case tv1:
            //Do things
            return true;
        case tv2:
            //Do things
            return true;
        case tv3:
            //Do things
            return true;

}}

我知道代码是非常错误的,但我似乎无法绕过它。我已经分配了我的findViewById,所以我不确定还有什么东西可以放入开关!

三江源!

3 个答案:

答案 0 :(得分:3)

 tv.setOnClickListener(this);
    tv1.setOnClickListener(this);
    tv2.setOnClickListener(this);
    tv3.setOnClickListener(this);

     @Override
        public boolean onClick (View v) {
            switch (v.getId()) {
                case R.id.xval:
                    //Do things
                    return true;
                case R.id.yval:
                    //Do things
                    return true;
                case R.id.zval:
                    //Do things
                    return true;
                case R.id.scalar:
                    //Do things
                    return true;

        }}

答案 1 :(得分:3)

我会提供另一种答案。首先,您必须创建一个OnClickListener,它将接收您的OnClick事件:

OnClickListener listener = new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            switch (v.getId())
            {
                case R.id.xval:
                    //code
                    break;

                case R.id.yval:
                    //code
                    break;

                case R.id.zval:
                    //code
                    break;

                case R.id.scalar:
                    //code
                    break;

                default:
                    break;
            }

        }
    };

然后,您必须将该侦听器与您拥有的每个TextView相关联:

tv.setOnClickListener(listener);
tv1.setOnClickListener(listener);
tv2.setOnClickListener(listener);
tv3.setOnClickListener(listener);

点击其中一个TextViews后,系统会调用您的OnclickListener onClick()回调,并会检查您点击的TextView ID并相应地运行代码,依赖于此案。

答案 2 :(得分:1)

创建一个侦听器,将其添加到所有TextView。切换视图ID,这是一个简单的int

View.OnClickListener listener = new View.OnClickListener()
{
       public void onClick(View v)
       {
        switch (v.getId()) {
            case R.id.xval:
                //Do things
                return true;
            case R.id.yval:
                //Do things
                return true;
            case R.id.zval:
                //Do things
                return true;
            case R.id.scalar:
                //Do things
                return true;
        }
       }
};

tv.setOnClickListener(listener);
tv1.setOnClickListener(listener);
tv2.setOnClickListener(listener);
tv3.setOnClickListener(listener);