把Android学习过程中遇到的问题以及自己分析感悟记录下来,对Android学习算是一个梳理。不断更新新问题。随机整理,想到什么问题就记下来。
1.Activity和View是什么关系?
Activity是Android最常用的一个组成模块,通常一个Activity就是展示一屏信息,换了另一个界面,就是换了一个Activity。但是View不也是在屏幕上显示信息吗,有什么关系啊。实际上View更加单纯,它只是显示UI,如可以只是一个button view,或者只显示text (text view)。而Activity则要复杂的多,它除了要显示一屏信息,还要响应用户事件。如用户按了menu键,我们必须在Activity中告诉系统如何响应这个menu按键,显示哪些menu等等。另外View都是在XML文件中定义,而在Activity中被调用。只是个人理解,欢迎指正补充。
2.Notepadv1中fillData()解析。
private void fillData() {
// Get all of the notes from the database and create the item list
Cursor c = mDbHelper.fetchAllNotes();
startManagingCursor(c);
String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
int[] to = new int[] { R.id.text1 };
// Now create an array adapter and set it to display using our row
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
setListAdapter(notes);
}
首先看下什么是Cursor?
Google是这样解释的:
This interface provides random read-write access to the result set returned by a database query.
也就是说它是一个接口,该接口可以对数据库查询结果进行随机读写访问。实际上这是Android系统为了避免返回大量rows,而采取的一种提高效率的方法。我们通常在Android平台上都是用Cursor对象来接收一个数据库查询结果。并通过Cursor对象对其结果进行各种操作或作为参数传递给其它method.
那么startManagingCursor(c);又是干什么用的呢?
先看google的解释:
we use an Activity method called startManagingCursor() that allows Android to take care of the Cursor lifecycle instead of us needing to worry about it. (We will cover the implications of the lifecycle in exercise 3, but for now just know that this allows Android to do some of our resource management work for us.)
翻译过来就是让Android去关注并管理该Cursor的生命周期,而不需要我们去操心。更多解释稍后再议
。
代码中构造了一个SimpleCursorAdapter对象,这里使用该类,其用途是为了绑定Cursor和相关的layout中域,说白了就是告诉系统我要显示哪些列的数据,并且针对这些列,应该按照什么格式去显示.该构造函数原型如下:
public SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)
该对象的参数就是我们要绑定的东西。第一个参数是context,通常传this。第二个是我们要绑定的View的resource ID(这里是R.layout.notes_row)。第三个参数是Cursor。第四个参数是我们要显示的Column String Array,这就是之前我们通过
String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
来新建了一个数组,该数组中只有一个String就是title String。第五个参数先看google的解释:
The views that should display column in the "from" parameter. These should all be TextViews. The first N views in this list are given the values of the first N columns in the from parameter.
这里的意思实际是说"from"指定的column返回的数据按照"to"指定的格式进行显示。这里的"to"只有一个格式就是R.id.text1。(注意text1是在layout: notesRow.xml中定义的)。这里需要注意的是如果from中有多个String,那么To中就要有多个格式相对应,并且是按照顺序。
最后通过setListAdapter(notes);来显示该List。这个method中参数类型是ListAdapter,而实际上SimpleCursorAdapter是ListAdapter的一个实际class。ListAdapter只是一个接口。
分享到:
相关推荐
**Android MAT内存分析工具详解** MAT(Memory Analyzer Tool...总结,MAT是Android开发中不可或缺的内存分析利器,通过深入学习和熟练运用,开发者可以有效地提高应用的性能和稳定性,避免因内存问题导致的用户流失。
通过学习这些文档,开发者可以更全面地了解Android Camera的运作机制,以及如何有效地解决开发过程中遇到的各种问题。此外,对于想要深入研究Android系统内部工作原理的开发者来说,对Camera服务和Binder机制的理解...
总之,"Android+上百实例源码分析以及开源分析+集合打包3"是一个全面的Android学习资源,它将帮助开发者从基础实例操作到源码深入理解,再到开源库的应用与分析,全面提升Android开发水平。通过系统学习和实践,...
`Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决.docx`可能详细阐述了如何处理这种包,以及Recovery如何合并原有系统和差分包来形成完整的新系统。 在升级过程中,`...
在Android学习过程中,掌握核心概念和实践技巧是至关重要的。"Android学习代码示例和课件讲解"资源包提供了一套全面的学习材料,包括代码示例和配套课件,旨在帮助初学者快速理解和掌握Android Studio的编程技术。 ...
在Android开发过程中,遇到各种错误是常有的事。这些错误可能是由于编程语法错误、API使用不当、资源管理问题或者是系统兼容性等因素导致的。本文将根据"android常见错误集"这个主题,结合压缩包中的"android常见...
在Android逆向工程的学习过程中,我们经常会遇到各种有趣且富有挑战性的知识点。这些知识点涵盖了从基本的APK分析到复杂的代码反编译、调试以及安全防护等多方面内容。在这个"记录一些我自己在学习Android逆向过程中...
在Android开发中,有时我们需要对应用的内存使用情况进行深度分析,这时堆 Dump 文件就显得尤为重要。堆 Dump 文件记录了应用程序运行时的内存分配情况,它可以帮助我们找出内存泄漏、过度对象创建等问题,从而优化...
在这个过程中,我们会了解到Android应用程序的生命周期、组件(如Activity和Service)以及Intent的概念。 随着学习的深入,Apidemo会涉及更多高级API,如图形绘制、动画、网络通信、数据库操作、多媒体处理等。例如...
尽管动态分析可以有效地捕获到恶意应用的动态行为特征,但由于恶意行为可能在应用运行过程中才被触发,这就要求动态分析需要在应用运行环境中进行,而这往往需要更高的资源消耗,也存在一定的检测延迟。 为了解决...
在Android开发过程中,开发者经常会遇到各种问题,这些挑战可能涉及到应用程序的性能优化、用户界面设计、内存管理、网络通信等多个方面。以下是一些基于标题和描述中的关键知识点的详细阐述,帮助开发者提升效率,...
在学习过程中,建议遵循以下步骤:首先,了解Android的整体架构和组件职责;然后,选择感兴趣的模块进行深入阅读,结合官方文档和社区资源理解源码逻辑;最后,实践修改和编译源码,通过实际操作加深理解。 总之,...
学生是使用该系统进行学习的主体,教师则是通过系统发现学生移动学习过程中的重点以及存在的问题。结合两类用户的特点,移动学习系统应该具备学习资源管理、在线交互、离线下载以及其他一些辅助功能。 资源管理功能...
在Android系统中,内存泄漏是一个严重的问题,它会导致应用程序占用过多的内存,进而影响设备性能,甚至可能导致应用崩溃。理解并有效地分析内存泄漏是每个Android开发者必须掌握的关键技能。 内存泄漏通常发生在...
本篇文章将深入探讨“Android学习之路——7.Service”,分析Service的基本概念、使用方式以及常见应用场景,同时结合源码解析Service的工作原理,并提供一个实战Demo——Service_Demo。 一、Service基本概念 ...
首先,获取Android源代码是学习过程的第一步。Android源代码主要存储在Git仓库中,通过使用`repo`工具,开发者可以方便地克隆和管理整个Android开源项目(AOSP)。在Ubuntu操作系统上,需要先安装必要的依赖,如Git...
在Android应用开发过程中,性能优化是一项至关重要的任务。"Android-Android开发辅助工具fpstopActivityactivity启动耗时电量cpu内存分析"是一个专为开发者设计的工具,它可以帮助开发者监测和分析应用程序的运行...
《Android学习资源大整合》这份资源包集合了丰富的Android学习材料,旨在帮助初学者和有经验的开发者深入理解Android开发的各个方面。以下是对其中各个文件的详细解读: 1. **基础入门系列(PDF)**:这一系列PDF文件...
这篇博客"Android MediaPlayer研究问题"可能深入探讨了在使用MediaPlayer过程中遇到的问题及解决方案。 首先,我们来了解MediaPlayer的基本用法。在Android中,MediaPlayer类提供了加载、控制和播放媒体文件的能力...