设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

如何使用Android自定义复合视图

2014-6-16 14:03| 发布者: joejoe0332| 查看: 7090| 评论: 0|原作者: lum|来自: 伯乐在线

摘要: 在最近的一个客户应用中,我遇到了一个需求,根据选定的值来生成指定数量的编辑框字段,这样用户可以输入人物信息。最初我的想法是把这些逻辑放到Fragment中,只是根据选中值的变化来向线性布局容器中增加编辑框数量 ...


  布局中包含自定义视图


  当想要在Activity或Fragment布局中使用自定义视图时,可以像使用其它的视图一样,加入一些简单的XML。


1
2
3
4
<com.ryanharter.android.compoundviews.app.views.FriendNameView
    android:id="@+id/friend_names"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>


  和其它的视图一样,可以使用 findViewById(int)方法来得到它。


1
mFriendNameView = (FriendNameView) findViewById(R.id.friend_names);


  在我们的MainActivity中,当数据拾取器的值变化时,我们可以非常容易地设置朋友的数量。当想要获取名称列表时,调用getFriendNames()方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mFriendCountPicker.setOnValueChangedListener(new OnValueChangeListener() {
    @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        mFriendNameView.setFriendCount(newVal);
    }
});
 
mCountFriendsButton.setOnClickListener(new OnClickListener() {
    @Override public void onClick(View v) {
        List<String> names = mFriendNameView.getFriendNames();
        Intent i = new Intent(MainActivity.this, FriendCountActivity.class);
        i.putStringArrayListExtra("names", new ArrayList<String>(names));
        startActivity(i);
    }
});


  尽管这是一个刻意设计的例子,但是自定义复合视图是一个极好功能封装方式。如果不进行封装,功能代码将散落在整个活动和片段中。自定义复合视图提供了可测试、可重用的代码,让应用程序更稳定。我鼓励大家想一想,自己的应用程序中哪里可以使用自定义复合视图。如果可以的话并与其他开发者分享,它们是非常有用的。


  本文的示例项目可以在Github上获取。


本文由 伯乐在线 - lum 翻译自 ryanharter。欢迎加入Android小组。转载请参见文章末尾处的要求。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部