目标:1.继续吃透计算器逻辑代码中关于栈的内容。(ok)
2.RecycleView的学习。(ok)
3.音乐播放器本地搜索的实现。(ok)
4.找到一下小实例并收藏。(no)
一、
1.栈是一种数据结构,通过对这种数据结构的运用能实现如中缀表达式变后缀表达式等方法
2.RecycleView:
Recycle的功能比ListView更强大,运用RecycleView要在build.gradle添加相应的依赖库。
然后要准备一个适配器继承RecycleView.Adapter并将泛型指定为FruitAdapter.ViewHolder(视图保持器)。
onCreateViewHolder()用于创建ViewHolder实例,并加载布局传入构造函数,将HolderView的实例返回。
onBindViewHolder()方法是用于对RecycleView子项的数据进行赋值,在每个子项滚动到屏幕内执行,通过position参数得到当前项的fruit实例,然后将数据设置到ViewHolder的ImageView和TextView中。
getItemCount()方法告诉RecycleView有多少子项,返回数据长度。
MainActivity中:
List用于储存数据,通过initFruit()方法初始化数据,然后创建RecycleView通过LinearLayoutManager指定布局方式,再创造FruitAdapter实例,将数据传入适配器最后再设置适配器,这样RecycleView和数据之间的关联就完成了
3.瀑布流布局
与上述不同的是,MainActivity中的onCreate()方法创建一个StaggergridLayoutManager的实例,此构造函数有两个参数,第一个用于指定布局的列数,第二个参数用于指定布局的排列方向
ps:将子项的高度定为不一致需要用到getRandomLengthName()方法
二、
1.文件存储
将数据存储在文件中:context提供了一个openFileoutput()方法可以用于将数据存储到指定的文件中,此方法接受两个参数:第一个参数是文件名(不可以包含路径)第二个参数是文件的操作模式:MODE_PRIVATE:默认的操作模式,所写入的内容会覆盖原文件的内容;MODE_APPEND:不存在就新建文件,存在就追加内容。
openFileOutput()方法能够得到一个FileOutputStream对象然后构建出一个OutoutStreamWriter对象,再借此构建出一个BufferedWriter对象,通过BufferedWriter来将文本写入文件中。
读取数据:openFileInput()只接收一个参数,即要读取的文件名。
2.部分SQl的知识:
a.SQL中Group By的使用:
“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
b.Cursor是指光标,游标。
Cursor是指每行的集合
——是获得的满足条件(就是我们query方法中传入的条件参数)的所有行。
(https://blog.csdn.net/android_zyf/article/details/53420267)这里的解释比较生动了
c.Query
query是一个查询参数类,封装了查询条件,分页,排序等功能。
三、
1.try/catch/finally 语句
try/catch/finally 语句用于处理代码中可能出现的错误信息。
错误可能是语法错误,通常是程序员造成的编码错误或错别字。也 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
try语句允许我们定义在执行时进行错误测试的代码块。
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
finally 语句在 try 和 catch 之后无论有无异常都会执行。
2.View:视图
基础知识:(https://blog.csdn.net/fang323619/article/details/51367158)
View是Android中所有控件的基类,是一种界面层的控件的一种抽象,它代表了一个控件,除了View,还有ViewGroup(控件组),ViewGroup内部包含了许多控件,即一组View.ViewGroup继承View.
构造函数(http://www.runoob.com/w3cnote/android-advance-custom-view.html)
方法一
public MyView(Context context) {
super(context);
} 方法二
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
如果这个控件会在 java 代码中 new 的话,必须实现方法一,如果控件直接在 xml 中使用,必须实现方法二,两者至少实现一个
其他有用的控件:MotionEvent、TouchSlop、VelocityTracker 、GestureDetector和Scroller。