A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-12-19 15:50 编辑

【济南中心】Android课程同步笔记day03:Android应用开发基础

数据存储:
android常用的本地存储方式有三种,如下:
*文件存储:文件(I/O)存储方法,常用于存储大数量的数据,但是缺点是更细数据将是一件困难的事情。
*SharePerference存储:它的本质是一个xml文件,常用于存储简单的参数设置
*数据库存储:即SLQite数据库,它是一个轻量级的数据库,支持基本的SQL语法,是常被采用的一种数据存储方式
SQLite:
开源项目,它为嵌入式轻量级的数据库

SQLite创建:
步骤如下
1. 定义一个数据库创建的帮助类 MyDataBaseOpenHelper extends SQLiteOpenHelper
2. 指定数据库文件的名称,数据库的版本号.默认的游标工厂
3. 通过helper得到一个可写或者是可读的数据库,数据库才会被创建
helper.getWritableDatabase();

SQLiteExpert:
SQLite Expert Professional是一款功能强大的SQLite数据库管理工具,允许用户在SQLite服务器上执行创建、编辑、复制、提取等操作。SQLite Expert支持SQLite所有的特征,包括一个可视化查询生成器,一个SQL编辑与语法突出
SQLiteExpert使用:1.将xx.db文件导入到SQLiteExpert中。
2.选中要查看的表,点击Data选项卡,馋看表中的内容。
3.DDL database definition language 查看sql语句。

数据库的增删改查:
* 增     
        insert into student (name,phone) values ('张三','110')
* 删
        delete from student where name='张三'
* 改
        update student set phone ='119' where name='张三'
* 查
        select * from student where name=?

数据库事务:
>事务:保证一组操作要么同时成功,要么同时失败.
代码如下:
[Java] 纯文本查看 复制代码
/**
         * 测试事务(安全性)
         */
        public void testTransaction(){
                PersonSQLiteOpenHelper mHelper = new PersonSQLiteOpenHelper(getContext());
                SQLiteDatabase db = mHelper.getWritableDatabase();

//                - laozhou 转账给 xiaosan. 1000块
                
                try {
                        // 1. 开始事物
                        db.beginTransaction();
                        
                        // laozhou 减去 1000  salary = salary - 1000
                        db.execSQL("update person set salary = salary - 1000 where name = 'laozhou'");
                        
//                        int result = 1 / 0;
                        
                        // xiaosan 加上 1000
                        db.execSQL("update person set salary = salary + 1000 where name = 'xiaosan'");
                        
                        // 2. 设置成功点. 可以设置多个, 把刚刚的所有操作一次提交
                        db.setTransactionSuccessful();

                } catch (SQLException e) {
                        e.printStackTrace();
                } finally {
                        // 3. 结束事物
                        db.endTransaction();
                        
                        db.close();
                }
                
        }

ListView:ListView作为android系统用比较重要的一个控件,要求大家对它熟练掌握
> 是系统给我们提供的一个可以显示很多个item的控件.
> 这个控件合理的控制了界面的显示,即使有1000000万个item要显示他也能扛得住

ListView的使用:Listview+adapter+数据源
其中适配器是用于将数据源中的数据映射到ListView中,而这种关联的建立通常是在adapter的构造函数中实现。
Adapter:为ListView的适配器,适配器一般有四种:ArrayAdapter,SimpleAdapter,BaseAdapter,CursorAdapter

ArrayAdapter:
[Java] 纯文本查看 复制代码
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                lv = (ListView) findViewById(R.id.lv);
                String[] objects = new String[]{"Animation","App","content","Media","NFC","OS"};
                lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item, objects));
        }

SimpleAdapter:
[Java] 纯文本查看 复制代码
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                lv = (ListView) findViewById(R.id.lv);
                List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();
                Map<String, Object> map1 = new HashMap<String, Object>();
                map1.put("icon", R.drawable.ic_menu_preferences);
                map1.put("name", "功能设置");
                data.add(map1);
                Map<String, Object> map2 = new HashMap<String, Object>();
                map2.put("icon", R.drawable.ic_menu_recent_history);
                map2.put("name", "时钟设置");
                data.add(map2);
                Map<String, Object> map3 = new HashMap<String, Object>();
                map3.put("icon", R.drawable.ic_menu_refresh);
                map3.put("name", "同步设置");
                data.add(map3);
                Map<String, Object> map4 = new HashMap<String, Object>();
                map4.put("icon", R.drawable.ic_menu_report_image);
                map4.put("name", "图片设置");
                data.add(map4);
                lv.setAdapter(new SimpleAdapter(this, data, R.layout.item, new String[]{"icon","name"}, new int[]{R.id.iv,R.id.tv}));
        }

BaseAdapter:
[Java] 纯文本查看 复制代码
public class MainActivity extends Activity {
        //mvc中的view,视图
        private ListView lv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                //查找视图
                lv = (ListView) findViewById(R.id.lv);
                //设置控制器 controller
                lv.setAdapter(new MyAdapter());
        }

        //BaseXXX SimpleXXX DefalutXXX
        /**
         * 控制器 用来控制listview如何显示
         */
        private class MyAdapter extends BaseAdapter{

                //控制listview里面有多少个item 
                @Override
                public int getCount() {
                        return 1000000;
                }
                //返回某个位置显示的view对象。
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                        TextView tv = new TextView(MainActivity.this);
                        System.out.println("getview:"+position);
                        tv.setText("我是文本:"+position);
                        tv.setTextSize(24);
                        return tv;
                }

                @Override
                public Object getItem(int position) {
                        return null;
                }

                @Override
                public long getItemId(int position) {
                        return 0;
                }
        }
}

Android样式:
android样式设置在styles.xml文件中,可以自定义自己的样式

[XML] 纯文本查看 复制代码
<resources>
        <style name="text_content_style">
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">wrap_content</item>
            <item name="android:textColor">#0000ff</item>
            <item name="android:textSize">20sp</item>
        </style>
        <style name="text_title_style" parent="@style/text_content_style">
             <item name="android:textSize">25sp</item>
        </style>

        <style name="text_content_style.sub">
            <item name="android:textSize">28sp</item>
        </style>
    
    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

</resources>
Android主题:android中activity的主题可以自己自主设置,在menu文件中设置
[XML] 纯文本查看 复制代码
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

在Activity代码中写下如何代码就可以生效了
[Java] 纯文本查看 复制代码
getMenuInflater().inflate(R.menu.main, menu);




28 个回复

倒序浏览

回帖奖励 +1 黑马币

赞赞赞赞赞赞赞赞赞赞赞赞
回复 使用道具 举报

回帖奖励 +1 黑马币

资源这么给力,而且还有黑马币!
回复 使用道具 举报

回帖奖励 +1 黑马币

学习学习
回复 使用道具 举报

回帖奖励 +1 黑马币

不错不错
回复 使用道具 举报
学习学习!
回复 使用道具 举报

回帖奖励 +1 黑马币

赞一个,,,,
回复 使用道具 举报
支持一个啊,都是好资料
回复 使用道具 举报

回帖奖励 +1 黑马币

济南中心给力了
回复 使用道具 举报
支持一个
回复 使用道具 举报

回帖奖励 +1 黑马币

真的给力 顶一下
回复 使用道具 举报

回帖奖励 +1 黑马币

给力!!!赞赞赞!!!!
回复 使用道具 举报

回帖奖励 +1 黑马币

好东西!谢谢分享!谢谢!!!
回复 使用道具 举报

回帖奖励 +1 黑马币

厉害了  我的哥
回复 使用道具 举报
有空多看看没错的
回复 使用道具 举报

回帖奖励 +1 黑马币

感谢分享!!
回复 使用道具 举报

回帖奖励 +1 黑马币

2333333333
回复 使用道具 举报
666666666666666
回复 使用道具 举报

回帖奖励 +1 黑马币

资源这么给力,而且还有黑马币!
回复 使用道具 举报
支持一个啊,都是好资料
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马