@TextChange
这个注解是用于接收 android.text.TextWatcher.onTextChanged(CharSequence s, int start, int before, int count) Android定义的事件。
[email protected],我们的代码要这样写:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById EditText edit_test; @AfterViews void afterView(){ edit_test.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub tvTest.setText(s); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); }}
使用这个注解之后我们的代码可以按下面的几种方式写:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @TextChange void edit_test(CharSequence text, TextView test, int before, int start, int count) { tvTest.setText(text); } @TextChange(R.id.edit_test) void test1(CharSequence text, TextView test) { tvTest.setText(text); } @TextChange(R.id.edit_test) void test2(TextView text) { tvTest.setText(text.getText()); } @TextChange(R.id.edit_test) void test3() { }}
支持多种的输入参数
@TextChange({R.id.edit_test, R.id.helloTextView})
支持多个View绑定一个BeforeTextChange
@TextChange void helloTextViewTextChanged(TextView edit_test)
可以在参数中指定View
@BeforeTextChange
这个注解是用于接收 android.text.TextWatcher.beforeTextChanged(CharSequence s, int start, int count, int after) Android定义的事件。
[email protected]
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById EditText edit_test; @AfterViews void afterView(){ edit_test.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub tvTest.setText(s); } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); }}
使用这个注解之后,我们可以按以下的多种方法写:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @BeforeTextChange(R.id.edit_test) void beforeTextChangedOnHelloTextView(TextView tv, CharSequence text, int start, int count, int after) { // Something Here tvTest.setText(text); } @BeforeTextChange(R.id.edit_test) void helloTextViewBeforeTextChanged(TextView tv) { // Something Here tvTest.setText(tv.getText()); } @BeforeTextChange({R.id.edit_test, R.id.helloTextView}) void beforeTextChangedOnSomeTextViews(TextView tv, CharSequence text) { // Something Here tvTest.setText(text); } @BeforeTextChange(R.id.edit_test) void beforeTextChangedOnHelloTextView() { // Something Here }}
支持多种的输入参数
@BeforeTextChange({R.id.edit_test, R.id.helloTextView})
支持多个View绑定一个BeforeTextChange
@BeforeTextChange void helloTextViewBeforeTextChanged(TextView edit_test)
可以在参数中指定View
@AfterTextChange
这个注解是用于接收 android.text.TextWatcher.afterTextChanged(Editable s) Android定义的事件。
[email protected]??的
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById EditText edit_test; @AfterViews void afterView(){ edit_test.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub tvTest.setText(s); } }); }}
使用这个注解之后,我们可以有这样的写法:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @AfterTextChange(R.id.edit_test) void afterTextChangedOnHelloTextView(Editable text, TextView hello) { // Something Here tvTest.setText(text); } @AfterTextChange void helloTextViewAfterTextChanged(TextView edit_test) { // Something Here tvTest.setText(edit_test.getText()); } @AfterTextChange({R.id.edit_test, R.id.helloTextView}) void afterTextChangedOnSomeTextViews(TextView tv, Editable text) { // Something Here tvTest.setText(text); } @AfterTextChange(R.id.edit_test) void afterTextChangedOnHelloTextView() { // Something Here }}
支持多种的输入参数
@BeforeTextChange({R.id.edit_test, R.id.helloTextView})
支持多个View绑定一个BeforeTextChange
@AfterTextChange void helloTextViewAfterTextChanged(TextView edit_test)
可以在参数中指定View
@EditorAction
这个注解是用于接收 android.widget.TextView.OnEditorActionListener#onEditorAction(android.widget.TextView, int, android.view.KeyEvent) Android定义的事件。
[email protected] 这个注解之前,我们要这么写代码:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById EditText edit_test; @AfterViews void afterView(){ edit_test.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { // TODO Auto-generated method stub tvTest.setText(actionId); return false; } }); }}
有了这个注解我们就可以这样写代码了:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @EditorAction(R.id.edit_test) void onEditorActionsOnHelloTextView(TextView hello, int actionId, KeyEvent keyEvent) { // Something Here tvTest.setText(actionId); } @EditorAction void helloTextViewEditorAction(TextView edit_test) { // Something Here tvTest.setText(edit_test.getId()); } @EditorAction({R.id.edit_test, R.id.helloTextView}) void onEditorActionsOnSomeTextViews(TextView tv, int actionId) { // Something Here tvTest.setText(actionId); } @EditorAction(R.id.edit_test) void onEditorActionsOnHelloTextViewText() { // Something Here } @EditorAction(R.id.edit_test) boolean onEditorActionsOnHelloTextView() { // Something Here return false; }}
支持多种的输入参数
@EditorAction({R.id.edit_test, R.id.helloTextView})
支持多个View绑定一个EditorAction
@EditorAction void helloTextViewEditorAction(TextView edit_test)
可以在参数中指定View
@FocusChange
这个注解是用于接收 android.view.View.OnFocusChangeListener.onFocusChange(View view, boolean hasFocus) Android定义的事件。
[email protected]?:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById EditText edit_test; @AfterViews void afterView(){ edit_test.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean arg1) { // TODO Auto-generated method stub setObject(String.valueOf(view.getId())); } }); } @UiThread void setObject(String s){ tvTest.setText(s); }}
有了这个注解之后,我们的代码可以这样写:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @UiThread void setObject(String s){ tvTest.setText(s); } @FocusChange(R.id.edit_test) void focusChangedOnHelloTextView(View hello, boolean hasFocus) { // Something Here setObject(String.valueOf(hello.getId())); } @FocusChange void helloTextViewFocusChanged(View edit_test) { // Something Here setObject(String.valueOf(edit_test.getId())); } @FocusChange({R.id.edit_test, R.id.helloTextView}) void focusChangedOnSomeTextViews(View hello, boolean hasFocus) { // Something Here setObject(String.valueOf(hello.getId())); } @FocusChange(R.id.edit_test) void focusChangedOnHelloTextView() { // Something Here }}
支持多种的输入参数
@FocusChange({R.id.edit_test, R.id.helloTextView})
支持多个View绑定一个EditorAction
@FocusChange void helloTextViewFocusChanged(View edit_test)
可以在参数中指定View
@CheckedChange
这个注解是用于接收 android.widget.CompoundButton.OnCheckedChangeListener.onCheckedChanged(CompoundButton buttonView, boolean isChecked) Android定义的事件
[email protected] 这个注解这前,我们的代码是这样的:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById CheckBox checkboxText; @AfterViews void afterView(){ checkboxText.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub tvTest.setText(String.valueOf(isChecked)); } }); }}
在使用了这个注解之后,我们的代码就可以这样写了:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @CheckedChange(R.id.checkboxText) void checkedChangeOnHelloCheckBox(CompoundButton hello, boolean isChecked) { // Something Here tvTest.setText(String.valueOf(isChecked)); } @CheckedChange void helloCheckBoxCheckedChanged(CompoundButton hello) { // Something Here tvTest.setText(String.valueOf(hello.isChecked())); } @CheckedChange({R.id.checkboxText, R.id.helloCheckBox}) void checkedChangedOnSomeCheckBoxs(CompoundButton hello, boolean isChecked) { // Something Here tvTest.setText(String.valueOf(isChecked)); } @CheckedChange(R.id.checkboxText) void checkedChangedOnHelloCheckBox() { // Something Here }}
支持多种的输入参数
@CheckedChange({R.id.checkboxText, R.id.helloCheckBox})
支持多个View绑定一个EditorAction
@CheckedChange void helloCheckBoxCheckedChanged(CompoundButton hello)
可以在参数中指定View
@Click
[email protected]
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById Button bt_one; @ViewById Button bt_two; @AfterViews void afterView(){ bt_one.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tvTest.setText("111111111111"); } }); bt_two.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tvTest.setText("22222222222"); } }); }}
使用后我们可以这样写
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @Click void bt_one(){ tvTest.setText("111111111111"); } @Click(R.id.bt_two) void bttwoOnclick(){ tvTest.setText("222222222222"); }}
同样的方法也可以处理多个View,多View的如下格式:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @Click({R.id.bt_one, R.id.bt_two}) void clickbt(View v){ if(v.getId() == R.id.bt_one){ tvTest.setText("111111111111"); } else if(v.getId() == R.id.bt_two){ tvTest.setText("222222222222"); } }}
@LongClick
@Touch
@ItemClick,@ItemLongClick,@ItemSelect
未使用注解时,我们的代码是这个样子地:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; private String[] mListStr = {"11111111","22222222","33333333","44444444","55555555"}; @ViewById ListView listviewTest; @ViewById Spinner spinnerTest; @AfterViews void afterView(){ spinnerTest.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mListStr)); listviewTest.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mListStr)); listviewTest.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { tvTest.setText("点击第"+position+"个项目"); } }); listviewTest.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub tvTest.setText("长点击第"+position+"个项目"); return false; } }); spinnerTest.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub tvTest.setText("选中了第"+position+"个项目"); } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } }); }}
如果使用了了上面的注解后,代码可以这样写:
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; private String[] mListStr = {"11111111","22222222","33333333","44444444","55555555"}; @ViewById ListView listviewTest; @ViewById Spinner spinnerTest; @ItemClick void listviewTest(String clickedItem){ tvTest.setText("点击个项目" + clickedItem); } @ItemLongClick(R.id.listviewTest) public void myListItemLongClicked(String clickedItem) { tvTest.setText("长点击个项目" + clickedItem); } @ItemSelect public void spinnerTest(boolean selected, String selectedItem) { tvTest.setText("选中了项目"+selectedItem); } @AfterViews void afterView(){ spinnerTest.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mListStr)); listviewTest.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mListStr)); }}
void listviewTest(String clickedItem)
这里的String是Item的类型,这里根据你的类型写。
也可以这样写
@EActivity(R.layout.activity_test)public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; private String[] mListStr = {"11111111","22222222","33333333","44444444","55555555"}; @ViewById ListView listviewTest; @ViewById Spinner spinnerTest; @ItemClick public void listviewTest(int position) { tvTest.setText("点击第"+position+"个项目"); } @ItemLongClick(R.id.listviewTest) public void myListItemLongClicked(int position) { tvTest.setText("长点击第"+position+"个项目"); } @ItemSelect public void spinnerTest(boolean selected, int position) { tvTest.setText("选中了第"+position+"个项目"); } @AfterViews void afterView(){ spinnerTest.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mListStr)); listviewTest.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mListStr)); }}