qq_33144163
饭特稀0217
采纳率0%
2016-01-06 02:47 阅读 1.6k

关于多个控件的响应事件

在一个项目中,如果有几十个控件的ID需要得到并且每个控件都有自己的点击响应事件,我是不是只能一个个的去声明并且用findviewbyId得到控件的ID,再然后每一个控件都给它写一个响应事件 有没有简单一点的方法 多谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • qq_27183003 ysuwood 2016-01-06 02:53

    截获程序消息队列,检索ID,消息,如果需要处理就处理。相同的处理就共用一段代码。

    点赞 评论 复制链接分享
  • Theresa_zxx ProXin 2016-01-06 02:58

    findViewById(id).setOnClickListener(this); 可以写一个循环:

     mMainView = li.inflate(R.layout.pv_yu_yue, null);
            for (int id : new int[] {
                R.id.a,R.id.b, R.id.c,
                    R.id.d, R.id.e,R.id.f, 
                    等等.............}) {
                mMainView.findViewById(id).setOnClickListener(this);
            }
    

    响应事件:

     @Override
        public void onClick(View v) {
            int id = v.getId();
            String screenSize = Global.sWidth > 1200 ? "&s=1" : "";
            switch (id) {
            case R.id.a: {
                    响应事件
            }
                break;
            case R.id.b: {
                响应事件
            }
            等等
            ....
            ....
        }
    
    点赞 评论 复制链接分享
  • Theresa_zxx ProXin 2016-01-06 03:01

    我是这样做的...................................

    点赞 评论 复制链接分享
  • Theresa_zxx ProXin 2016-01-06 03:12

    不太清楚你这些控件是随机生成的还是固定的,如果是随机生成的那更简单,重写他的监听再控件集合中调用即可

     class ItemOnClickListener implements OnClickListener {
            int id;
    
            public ItemOnClickListener(int id) {
                super();
                this.id = id;
            }
    
            @Override
            public void onClick(View v) {
                响应时间
            }
        }
    
    点赞 评论 复制链接分享

相关推荐