今日小结 4.6

  • ListView控件——OK
  • 研究官方样例 RecyclerView,在MainActivity主窗口中添加RecyclerView显示推荐的衣服照片——OK
  • MainActivity主窗口右上角添加Menu菜单,跳转到添加衣服AddClothesActivity——OK


1.适配器 Adapter 相当于控制器(C),是连接数据模型(M)和视图(V)的桥梁。

类似于J2EE中的MVC框架,数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上。

从宏观上看,适配器Adapter是接口implements的应用之,它是一个抽象类,连接自定义类和接口,也就是让自定义类有选择性的实现接口的功能。

他需要被子类继承。

比如,AdapterView的结构:

public abstract class AdapterView<T extends Adapter> extends ViewGroup

java.lang.Object

android.view.View

android.view.ViewGroup

android.widget.AdapterView<T extends android.widget.Adapter>

(1)适配器Adapter 的视图V

AdapterView中的数据类型——泛型<T extends Adapter 是继承了Adapter的抽象类,也就是说AdapterView是内容(M,数据模型)Adapter(C,控制器) 来决定的视图类(V)

AdapterView的作用是以列表形式显示多项具有相同格式的资源。

使用AdapterView的好处是他将前端显示和后端数据相分离,(也就是MVC框架),使得视图与数据的绑定更加便捷,便于修改。

ListView 列表,GridView 网格表,Spinner 下拉列表,Gallery 相册 都是AdapterView的子类。

(2)适配器Adapter 的控制器C


Adapter


含义


ArrayAdapter<T>


用来绑定一个数组,支持泛型操作


SimpleAdapter


用来绑定在xml中定义的控件对应的数据


SimpleCursorAdapter


用来绑定游标得到的数据


BaseAdapter


通用的基础适配器

(3)适配器Adapter的数据模型M

例如:

public class MainActivity extends AppCompatActivity {
    private String[] clothesName = new String[]{        //数据模型M,数组形式Array,String类型
            "dhu_uniform_blue", "jacket_long_sleeve_blue", "jeans_long_light_blue",
            "jeans_short_dark_blue", "T-shirt_white", "T-shirt_black",
            "jeans_short_dark_blue", "T-shirt_white", "T-shirt_black",
            "jeans_short_dark_blue", "T-shirt_white", "T-shirt_black"
    };
    private ListView lv_showClothesName = null;        //适配器视图V,ListView是AdapterView(适配器视图类V)的一个子类,
    private ArrayAdapter<String>  arrayAdapter = null;      //适配器控制器C,绑定数组的适配器,类似的还有SimpleAdapter,ListAdapter等
                                                            //以上构成了MVC框架
    

2.泛型 —— 给数据类型设置代号,统一数据类型,避免了类转换异常(ClassCastException)

object类可以接受任何数据类型,但是容易引发安全问题——setter和getter的数据类型不匹配

3.自动装箱,自动拆箱

自动装箱 是将基本数据类型转化为引用数据类型

自动拆箱 是反过来

比如,

(1)装箱

Integer a = 3;  //自动装箱

相当于

Integer a = Integer.valueOf(3);

(2)拆箱

int a = new Integer(3);

4.什么是ArrayAdapter

new ArrayAdapter<T>()

5.哈希表HashMap<>

键值对

6.使用SimpleAdapter的步骤

(1).安排布局

(2).声明属性

(3).绑定数据到控制器

(4).绑定控制器到视图类

        simpleAdapter = new SimpleAdapter(this,arrayList,       //绑定数据到控制器,用到了SimpleAdapter的构造函数完成其实例化
                R.layout.item_main,
                new String[] {"itemname","itemcontent","itemimage"},
                new int[] {R.id.tv_itemname,R.id.tv_itemcontent,R.id.iv_itemimage} );
        lv_clothesLists.setAdapter(simpleAdapter);            //绑定控制器到视图类
        lv_clothesLists.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(SimpleAdapterDemo.this,"点击了第 "+ position + 1 +" 行",Toast.LENGTH_SHORT).show();
            }
        });

7.

AppCompatActivity

Toolbar

8.如果要使用ToolBar,就要先去掉ActionBar状态栏和标题栏Title

    <style name="AppTheme.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
    </style>

或者直接

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
时间: 2024-11-03 22:50:42

今日小结 4.6的相关文章

今日小结 5.7

1. 自定义越多 灵活性越高,封装越多 灵活性越差 联想(1)灵活性:大量封装的图形化编程Labview <  适当封装的Java < 接近底层的C (2)ListView 中的Adapter 灵活性:ArrayAdapter < SimpleAdapter < BaseAdapter ArrayAdapter 只能显示一行一行的文字(字符串) SimpleAdapter 既可以显示图片又可以显示文字,它将xml中的图片控件和文字控件 关联上 数据集合,内部已经封装好了 setIm

今日小结 4.24

JAVA IO,StringBuffer 类  OK JAVA网络编程 对象多态性,向上转型,向下转型  OK 1.List接口的常用子类 (1)ArrayList 子类 数组List (2)LinkList 子类,实现Queue接口  链表List 2.引用类型和原始数据类型 int 是原始类型 integer 是引用类型,是int的封装类 为什么要进行封装呢? 因为封装成类就会有各种方法, 方便进行类型转换,数据处理 比如: //int 和 Integer int a = 3; //原始数据

今日小结

1.再次看了角色管理模块的源码,加深对项目的理解 2.写了t_role表格,写了服务层的代码 3.试着写了角色管理的控制层代码,但对这块的html文件不熟,要重新写这块的脚本文件,所以今天这块进展不大,具体的添加.删除功能还不能实现,明天小组商量后继续完善这块的代码

今日小结 4.30

1.style 一般是把多种属性(item)封装成一个类型(style),方便复用 比如,在style.xml里看到了 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="c

今日小结 4.29

布局layout,视图view  OK 1.布局layout是盛放视图view的容器 再说一遍,视图view是放在layout布局中的! 通过改变布局大小来改变视图大小 布局layout的参数一般是大小,位置,内容(内部视图控件)的排列方式(水平,垂直等) 所以在视图控件(比如Button)的设置中,关于layout_的都是布局的参数,比如 layout_width 是改变Button所在的布局的宽度的,如果选择matchparent则是充满整个布局 2.LayoutInflate 常用于动态加

今日小结 4.15

SD卡照片显示到RecyclerView OK 数据库的查询 rawquery()   OK 1.软件 架构,模型,开发方法(开发框架) MVC,MVP 2.泛型 泛型接口 public interface Presenter<V> { 3.线程池 thread pool 线程池适合于并行发生的若干个持续时间不长且互不干扰的函数 4.MVP模式 减少了Activity的职责,使分工更明确,代码结构更清晰

今日小结 4.1

SQLite一章 生命周期,活动的创建.销毁.跳转 1.面向对象的程序设计的代码执行顺序好比是 数据结构中图的广度优先遍历 比如: public void onClick(View v) { Log.d("mylog","onClick"); Intent it = new Intent (MainActivity.this,SubActivity.class); it.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); Log.d(

今日小结0807

今天看了: 1.HTML的学习 字体标签 标题标签 超链接 列表标签 表格标签 跨行跨列表格 表单标签 对HTML有了深入的了解,再结合spring练习3和练习4,对练习有了更深入的理解 2.做了练习题目1和题目3 明天计划: 做练习题目2和题目4 学习js

今日小结 5.2

服务 Service  OK 广播 Broadcast   OK 1. 一些Bug 记录 (1)记得在Manifest中添加 服务,否则 编译不报错,服务却没有执行 <service android:name=".BLEService"/> (2) myViewHolder = new MyViewHolder();Log.d(TAG, "getView: 完成了new MyViewHolder"); //一定要指定是 converView下的findV

今日小结 4.7

优化ToolBar,Menu 绑定照片到RecyclerView中 —— OK 学习Fragment ——OK 按钮的点击变化 1.Fragment将每一个视图部分(Fragment)的视图设置(Fragment layout)和程序编写(XXFragment.class)相分开 , 提高了代码的可读性,复用性和维护性 2.使用RelativeLayout + LinearLayout 嵌套完成四个按钮底部均匀放置, 使用RelativeLayout完成放置底部操作 android:layout