其实我是想看ListView,但是ListView135k,父类AbsListView216k,爷类AdapterView39k。所以只能从老人家下手了。AdapterView直接继承了View,所以从这里看也是比较简单的方法。刚开始写android的时候总觉得Spinner这种鸡肋类存在没什么意义。看了类结构(前一篇有)之后才发现,这个类不常用,但是可以拿来学习,因为很小啊。乍看AdapterView很难看出它是做什么的。而AbsSpinner15k,Spinner25k这么看起来就简单多了吧。
不多说了,问题还得一点一点解决。
BaseLine
看源代码的时候多少会涉及到baseline的问题。View带有一个方法叫getBaseline(),默认返回-1。
baseline是英文中的东西。还记得中学时写英文单词用的作业本吗?如上图,baseline就是那根红线。对于TextView这种包含文字的控件,baseline是需要考虑到的。
再留张图以后做参考:
http://www.myfirstfont.com/glossary.html
onAttachedToWindow()和onDetachedFromWindow()
它们没有被写在Activity的生命周期中,初学的时候也没有上。onAttachedToWindow()会在第一次onResume()之后被调用,这是view刚刚获得canvas。onDetachedFromWindow()会在onDestroy()时被调用(可能是在后面),在调用时,已经没有canvas用了。Spinner中,onDetachedFromWindow()被用于销毁AlertDialog。我之前都在activity.onDestroy()中销毁对话框。可是View没有onDestroy方法,所以,如果需要在View中再添加AlertDialog,那只能在这里销毁了。回过头来,View.onAttachedToWindow相当于Activity.onCreate(),而View.onDetachedFromWindow()相当于View.onDetachedFromWindow()。View有个包级方法dispatchDetachedFromWindow()这里会调用onDetachedFromWindow(),也就是说,这个方法会被系统调用。activity的onAttachedFromWindow()和onDetachedFromWindow()中没有对view的相应方法进行调用。
分享到:
相关推荐
个人实现了一个比较简单的AdapterView的实现类,希望能够帮助到大家理解AdapterView的实现。
一个AdapterView工具,仿照Android里面的AdapterView,用于Unity中
android studio移动开发基础:adapterview PPT
在 AdapterView 和 RecyclerView 中通用的 Adapter 和 ViewHolder。RecyclerView 支持 DataBinding 、多种 Item 类型、添加 Header 和 Footer
package e gallery; import android app Activity; import android os Bundle; import android view LayoutInflater; import android view View;...import android widget AdapterView OnItemSelecte [更多]
It supports AdapterView(ListView,GridView,etc) and RecyclerView. Dependency compile 'com.barryzhang:temptyview:0.0.1' Usage I. Initialize initialize some custom attributes —— this step is not ...
在 AdapterView 和 RecyclerView 中通用的 Adapter 和 ViewHolder。 BGAAdapterViewAdapter 和 BGAViewHolderHelper 用于简化 AdapterView 的子类(如 ListView、GridView)的适配器的编写 BGARecyclerViewAdapter...
import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.Toast; public class myMenu extends ...
listview子项(Item)的取值存在很多问题,常常会因为方法不对而取到空值,或者直接抛空指针异常。对于这些问题,也许你曾和我一样困惑,不过,我相信,你看完我的例子之后可以茅塞顿开。为了照顾新手、菜鸟,本人...
ListView也是Android中比较难以使用的控件,这节内容就将详细解读ListView的用法。 一个ListView通常有两个职责。 (1)将数据填充到布局。 (2)处理用户的选择点击等操作。 第一点很好理解,ListView就是实现...
适用于Android的可缩放ImageView可以在AdapterView和Recyclerview中使用。一个可拉伸拉伸的ImageView,可在AdapterView和RecyclerView中使用。 特征 使用多点触控进行缩放。 可以在AdapterView和Recyclerview中...
import android.widget.AdapterView.OnItemSelectedListener; public class AddressSelectorDialog extends BaseDialog { /**省类型*/ private static final int INDEX_PROVINCE = 1; /**城市类型*/ private ...
是否厌倦了前面“平淡无奇”的UI组件学习,感觉功能just soso?没关系,从本集开始,疯兄将给众位带来更加高级别的UI组件,这些高级别的UI组件在关键时候一旦出手,将给芸芸众生带来神一般的体验和惊艳的爽感!...
OverlapImageGalleryView is a flexible library which helps you to create overlapping images gallery in your android Application. You can easily integrate it with the most popular image loading ...
//获取所在省含有哪些市(从资源数组文件中获取数据) if(pro.equals("河北省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.hebei, android.R.layout.simple_spinner_...
5.2 Android中可用的Intent 5.3 Intent的组成 5.3.1 Intent和数据URI 5.3.2 一般操作 5.3.3 使用extra信息 5.3.4 使用组件直接调用活动 5.3.5 Intent类别 5.3.6 将Intent解析为组件的规则 ...
Android的AdapterView用的比较多,ListView,GridView,Spinner等,原生的BaseAdapter对ViewHolder没有支持,每次都要,定义内部类,inflater根布局,对item内部view设置clicklistener并转发到adapter的调用者等。...
仿zaker效果的拖拽排序。可以动态设置列数,动态...项目地址:https://github.com/zzhouj/Android-DraggableGridViewPager 效果图: 如何使用:xml中创建<com.coco.draggablegridviewpager.DraggableGridViewPager>...
android 图片 拍照 删除 添加 旋转 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout....