有时候,一个小技巧能够极大地简化代码,工作中也积累了一些小技巧,在这里逐一记录
1、点击事件的写法
一个上线应用中,必然存在很多的控件,而这些控件中绑定点击事件的绝对不在少数。我们的一般写法是直接找到控件,然后设置事件监听器,示例代码如下:findViewById(R.id.fl).setOnClickListener(this);
然后是所在activity或fragment实现OnClickListener接口,重写它的onClick方法这应该是较为常见的做法,当然还有使用内部类,匿名对象的方法,不过适用场景有限。@Override public void onClick(View v) { // TODO Auto-generated method stub }
这种做法很好,很常用,但有一点,如果需要绑定地点击事件的控件很多,那么就要写很多句这样的重复代码,那么有没有办法优化呢?
当然是有的~~
每一个控件都永远一个onClick属性,它的属性值就是绑定点击事件的方法名。将所有需要绑定点击事件监听的控件,都写同一个方法名,这样就节约了绑定控件的代码。不过如果点击事件是添加在fragment中的,那么需要它所在的activity中转一下。
示例代码如下:public class MainActivity extends FragmentActivity { private DemoFragment demoFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); demoFragment = new DemoFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.fl, demoFragment).commit(); } public void click(View view){ demoFragment.click(view); } }
public class DemoFragment extends Fragment { private TextView mTextView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_demo, null); mTextView = (TextView) view.findViewById(R.id.tv); return view; } public void click(View v){ if(v.getId() == R.id.tv){ mTextView.setText("我已经被更改了"); } else if(v.getId() == R.id.tv_2){ mTextView.setText("我再改~"); } } }
布局文件很简单,不在贴出。