View设置点击事件的整理

2017-09-20  本文已影响18人  YbSTGing

接上篇文章Popupwindow的使用记录

在使用这个库的一个收获(其实是我忘记怎么设置了)。
直接上代码:

View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mPopWindow != null) {
                    mPopWindow.dissmiss();
                }
                String showContent = "";
                switch (v.getId()) {
                    case R.id.tv_pop_01:
                        showContent = "点击 1";
                        break;
                    case R.id.tv_pop_02:
                        showContent = "点击 2";
                        break;
                    case R.id.tv_pop_03:
                        showContent = "点击 3";
                        break;
                    case R.id.tv_pop_04:
                        showContent = "点击 4";
                        break;
                    case R.id.iv_popw_exit:
                        showContent = "";
                        break;
                }
                if (!TextUtils.isEmpty(showContent))
                    ToastUtils.showShort(getActivity(), showContent);
            }
        };
        contentView.findViewById(R.id.tv_pop_01).setOnClickListener(listener);
        contentView.findViewById(R.id.tv_pop_02).setOnClickListener(listener);
        contentView.findViewById(R.id.tv_pop_03).setOnClickListener(listener);
        contentView.findViewById(R.id.tv_pop_04).setOnClickListener(listener);
        contentView.findViewById(R.id.iv_popw_exit).setOnClickListener(listener);

当时脑子转不过弯来,正在想Popupwindow里面的子View的点击事件该怎么设置,看了下作者的源代码,如上面所示。
现在一看,这不就是以前学习的View的点击事件的设置么,应该是有5种方式来设置View的点击事件,现在已经忘的差不多了,每天就知道用 ButterKnife .......

整理一下思路, 记录View的点击事件,顺便回顾一下知识。

View 点击事件的设置方法:

1、 直接在布局文件中设置,如下图所示:

布局中设置点击事件.png

其中 onClick 里面的名称是在代码中点击事件对应的方法名称。

代码中对点击事件的处理,如下图所示:

布局中设置点击事件_代码.png

2、 代码中设置

2.1 让Activity或者Fragment 实现点击事件方法

例如: public class MainActivity extends AppCompatActivity implements View.OnClickListener
然后在 实现的方法中通过View 的 id 来设置相应的点击事件的处理。

2.2 直接使用匿名内部类,直接点击处理事件
        TextView tv = (TextView) contentView.findViewById(R.id.tv_pop_01);
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //do something
            }
        });
2.3 建立一个类,实现 implements View.OnClickListener ,View设置监听器为新建的这个类,这个类中处理点击事件

建立类:

public class testListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            
        }
    }

View设置点击事件

TextView tv = (TextView) contentView.findViewById(R.id.tv_pop_01);
tv.setOnClickListener(new testListener());
2.4 使用ButterKnife、Rxbinding、databinding 这种方式,设置对应点击事件。(是叫做依赖注入??)
上一篇下一篇

猜你喜欢

热点阅读