结合意见和资源
事件监听器
列表适配器, RecyclerView 代码>实施
醇>
为什么要使用黄油刀
这个库的目的是帮助开发者写出更好的代码,并试图减少在的onCreate 代码>上的方法活动 code>类和片段代码> onCreateView 代码>>秒。您只需要在这些方法中写如下:
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
// ...
ButterKnife.bind(本);
// ...
}
代码> PRE>
@覆盖
公共查看onCreateView(LayoutInflater吹气,ViewGroup中容器,
捆绑savedInstanceState){
//充气布局此片段
视图视图= inflater.inflate(R.layout.fragment_blank,容器,FALSE);
ButterKnife.bind(这一点,图)。
返回查看;
}
代码> PRE>
在箱子黄油刀结合两者到指定的Android 活动代码>或查看代码>目标,以在这些类指定的注射正确地采取行动。所有的代码视图发现线和动作监听器在其他地方实施,使这些方法尽可能干净。
结合意见和资源
奶油刀替换标准 findViewById 代码>与呼叫@BindView 代码>,后跟一个视图ID并将其自动转换在相应的布局对应的图。代码的这种表示使得更紧凑和可读性。
下面是这种“注入”的例子:
@ BindView(R.id.imageView)ImageView的图像;
@BindView(R.id.button)键按钮;
代码> PRE>
用户可在应用程序资源相同的像字符串代码>,绘制对象代码>和尺寸(扪代码>,值代码>等)。这里是所有与黄油刀可能的绑定。
@ BindString(R.string.title)字符串标题;
@BindDrawable(R.drawable.sitepoint)可绘制sitepointDrawable;
@BindColor(R.color.colorPrimary)INT primaryColor;
代码> PRE>
事件监听器
黄油刀也使得设定的Android布局视图代码>容易的事件侦听器,并删除从键的onCreate 代码>听众实施和onCreateView 代码>方法。
下面是一个例子:
@的OnClick(R.id.button)
公共无效ButtonClick(){
//执行一些动作
}
代码> PRE>
这不仅限于点击 code>的事件,在这里都可以设置其他事件。
材料设计
对于本教程的其余部分,我将重点放在注入黄油刀功能材料设计的意见和components.Open的Android Studio和创建一个基本活动的应用程序。
有什么更好的组件来测试具有比 FloatingActionButton 代码>。
公共类MainActivity延伸AppCompatActivity {
// FloatingActionButton
@BindView(R.id.fab)
FloatingActionButton FAB;
@OnClick(R.id.fab)
公共无效SnackbarNotification(查看视图){
Snackbar.make(视图,“太好了,它的工作原理与材料设计”,Snackbar.LENGTH_LONG)
.setAction( “动作”,NULL).show();
}
// ...
}
代码> PRE>
正如你可以在图片中看到它下面的工作如你所愿。
适配器
黄油刀,带有表适配器效果很好,但它也与其他材料设计类似部件的工作,如在RecyclerView code>的适配器?
建设的过程RecyclerView code>的是长期和复杂的,所以我建议你先读我的文章,解释如何。
我将集中在 RecyclerView 代码>有关黄油刀,在ViewHolder 代码>和视图结合的部分。这个例子的完整代码可以在GitHub上。
在ViewHolder 代码>示例的 RecyclerView 代码>看起来像这样(在Recycler_View_Adapter.java)。
公共类View_Holder延伸RecyclerView.ViewHolder {
@BindView(R.id.cardView)
CardView品种;
@BindView(R.id.textView)
TextView的称号;
@BindView(R.id.imageView)
ImageView的ImageView的;
View_Holder(查看ItemView控件){
超级(ItemView控件);
ButterKnife.bind(此,ItemView控件);
}
}
代码> PRE>
此 ViewHolder 代码>类表示 RecyclerView 代码>用下面的布局(row_layout.xml)的一行。
的xmlns:应用= “http://schemas.android.com/apk/res-auto”
机器人:ID = “@ + ID / cardView”
机器人:layout_width = “match_parent”
机器人:layout_height = “WRAP_CONTENT”
机器人:layout_marginBottom = “@扪/ activity_vertical_margin”
应用程式:cardCornerRadius = “8DP”
应用程式:cardElevation = “8DP”>
机器人:layout_width = “120dp”
机器人:layout_height = “110dp”
机器人:layout_alignParentTop = “真”
机器人:layout_centerHorizo??ntal = “真”
机器人:背景= “@颜色/ abc_input_method_navigation_guard”
机器人:SRC = “@绘制/ butterknife”> ImageView的>
机器人:layout_width = “WRAP_CONTENT”
机器人:layout_height = “WRAP_CONTENT”
机器人:layout_gravity = “中心|右”
机器人:layout_marginRight = “40dp”
机器人:文字=“大文本”
机器人:textAppearance = “机器人:ATTR / textAppearanceLarge”> TextView的>
机器人>
代码> PRE>
在一个活动 code>类结合的 RecyclerView 代码>和提供数据到其适配器代码>(在MainActivity.java)。
@BindView(R.id.recyclerview)
RecyclerView recyclerView;
代码> PRE>
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
// ...
ButterKnife.bind(本);
//设置的RecyclerView
列表数据=新的ArrayList <>();
对于(中间体I = 0;我<15; i ++在){
//生成15种数据元素
data.add(新数据( “奶油刀”,R.drawable.butterknife));
}
Recycler_View_Adapter适配器=新Recycler_View_Adapter(数据,getApplication());
recyclerView.setAdapter(适配器);
recyclerView.setLayoutManager(新LinearLayoutManager(本));
}
代码> PRE>
结论
Android的黄油刀可帮助您创建更干净,更整洁的代码,处理了很多丑陋的样板代码是Android已经成为臭名昭著。你有没有在你的项目中尝试过?我很想知道,如果你发现它有用。
以上信息来源于网络,如有侵权,请联系站长删除。