Android快速开发框架之xUtils---注解模块 ---- ViewInject

来源:互联网 发布:腾讯红包数据作弊 编辑:程序博客网 时间:2024/05/16 00:42

xUtils 包含了很多实用的android工具,本篇博客将介绍一下xUtils的注解模块。

  • xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…
  • xUitls 最低兼容android 2.2 (api level 8)
  • xUtils总共包括四大模块分别是:注解模块、网络模块、图片模块、数据库模块。

1.在build.gradle中依赖xUtils

compile 'org.xutils:xutils:3.3.26'

2.对框架进行初始化,创建一个类 extends Application、在Manifest文件中注册zsyApp

public class zsyApp extends Application {    @Override    public void onCreate() {        super.onCreate();        //框架初始化        x.Ext.init(this);    }}

3.使用注解的方式加载布局,绑定控件

@ContentView(R.layout.activity_main)//Activity注解public class MainActivity extends AppCompatActivity {    @ViewInject(R.id.viewpager)//布局控件注解    ViewPager viewPager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         //只需这一行代码,就将布局和控件加载了。省去了重复的findViewById();        x.view().inject(this);//加载布局,控件    }}

4.使用@Event为按钮绑定监听事件

//通常我们会使用匿名内部类为按钮绑定监听事件button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {            }        });    /**     * button的点击事件     * 访问修饰符必须是private,方法名可以任意。参数和返回值必须跟上面写的onClick方法一致     * type 默认值是View.OnClickListener.class,如果是这个可以不写。也就是事件类型     * value对应的就是控件id,所以我们可以不用findViewById绑定控件     * @param view     */    @Event(type = View.OnClickListener.class, value = R.id.btn)    private void click(View view) {        Snackbar.make(view, "点击事件", Snackbar.LENGTH_SHORT).show();    }    /**     * button的长按事件     * @param view     */    @Event(type = View.OnLongClickListener.class, value = R.id.btn)    private boolean Longclick(View view) {        Snackbar.make(view, "长按事件", Snackbar.LENGTH_SHORT).show();        return true;    }

5.Fragment注解

@ContentView(R.layout.inject_view)//加载布局public class InjectFragment extends Fragment {    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        return x.view().inject(this, inflater, container);//fragment注解    }}

6.对ListView中ViewHolder进行注解绑定和Item的点击/长按事件

//ListView代码省略,请自行脑补....public class ListViewAdapter extends BaseAdapter {    private List<String> listItems;    private LayoutInflater inflater;    public ListViewAdapter(Context context, List<String> listItems) {        this.listItems = listItems;        inflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        return listItems.size();    }    @Override    public Object getItem(int position) {        return listItems.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder;        if (convertView == null) {            convertView = inflater.inflate(android.R.layout.simple_list_item_1, null);            viewHolder = new ViewHolder();            //ViewHolder注解            x.view().inject(viewHolder, convertView);            convertView.setTag(viewHolder);        } else {            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.childName.setText(listItems.get(position));        return convertView;    }    private class ViewHolder {        @ViewInject(android.R.id.text1)//加载item的控件        TextView childName;    }}    /**     * ListViewItem的点击事件     */    @Event(type = AdapterView.OnItemClickListener.class, value = R.id.list_item)    private void onItemClick(AdapterView<?> parent, View view, int position, long id) {        Snackbar.make(view, list.get(position) + "点击事件", Snackbar.LENGTH_SHORT).show();    }/**     * ListViewItem的长按事件     */    @Event(type = AdapterView.OnItemLongClickListener.class, value = R.id.list_item)    private boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {        Snackbar.make(view, list.get(position) + "长按事件", Snackbar.LENGTH_SHORT).show();        return true;    }

这里写图片描述


 转载地址:http://blog.csdn.net/a_zhon/article/details/52814534

原创粉丝点击