1、Adapter(ArrayAdapter和SimpleAdapter):

1.1 ArrayAdapter:

期中有一些官方定义好的布局可以使用,比如android.R.layout.simple_expandable_list_item_1等等。


1.2SimpleAdapter:


2、progressBar+Handler:

使用异步线程控制progressBar。Android的控件是非线程安全的,在其他线程中操作主线程的控件将可能发生意外的情况,因此设计者希望对控件的操作依然交给主线程去完成,但在其他线程中,我们希望有一种机制去通知主线程去改变控件,于是Handler诞生了。Handler对象也是运行一个线程上的,当Handler是运行在主线程上的一个对象时,它就相当于在主线程上的一个邮筒,而message相当于信件,我们在异步线程中把想让主线程改变的命令写在信(message)中,然后放入邮筒(handler),handler不需要知道信中写了什么,只要把信交给主线程,主线程拆开信后接受命令并作出更改。

package com.example.z_monster.testapp;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ProgressBar;public class MainActivity extends AppCompatActivity {    ProgressBar progressBar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        progressBar = (ProgressBar) findViewById(R.id.progressBar);        new Thread(processRun).start();    }    Handler handler = new Handler(new Handler.Callback() {        @Override        public boolean handleMessage(Message message) {            progressBar.setProgress(message.arg1);            return true;        }    });    Runnable processRun = new Runnable() {        int i = 0;        @Override        public void run() {            while (true) {                //拿到主线程Handler的Message                Message msg = handler.obtainMessage();                //将进度值作为消息的参数包装进去,进度自加1                msg.arg1 = i++;                //将消息发送给主线程的Handler                handler.sendMessage(msg);                //这个例子是反复循环,实际项目中可能没必要                if (i > 100) {                    i = 0;                }                try{                    //为了让您看到进度滚动效果,放慢进度上升的速度                    Thread.sleep(300);                }                catch(InterruptedException e){                    e.printStackTrace();                }            }        }    };}

3、SharedPreferences :
//TestXML为该文档的名称,Context.MODE_PRIVATE为该文件的访问权限

SharedPreferences sharedPreferences = getSharedPreferences("TestXML", Context.MODE_PRIVATE); //私有数据

//获取edit写入数据Editor editor = sharedPreferences.edit();//获取编辑器editor.putString("name", "planz");editor.putInt("age", 20);editor.commit();//提交修改

//preference的文件结构生成的TestXML.xml文件内容如下:<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map><string name="name">planz</string><int name="age" value="20" /></map>

//读取数据

int age=sharedPreferences .getInt("age",0);//第二个参数为默认值,当share中没有age这个量时。

//访问其他应用中的preference

Context otherAppsContext = createPackageContext("com.palnz", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("TestXML", Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("name", "");

或者:

File xmlFile = new File(“/data/data/<package name>/shared_prefs/TestXML.xml”);//<package name>应替换成应用的包名。

4、openfileinput和openfileoutput:

private String read(){try{// 打开文件输入流FileInputStream fis = openFileInput(FILE_NAME);byte[] buff = new byte[1024];int hasRead = 0;StringBuilder sb = new StringBuilder("");while ((hasRead = fis.read(buff)) > 0){sb.append(new String(buff, 0, hasRead));}return sb.toString();}catch (Exception e){e.printStackTrace();}return null;}private void write(String content){try{// 以追加模式打开文件输出流FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);// 将FileOutputStream包装成PrintStream//也可以直接使用fos.write(content.getBytes());PrintStream ps = new PrintStream(fos);// 输出文件内容ps.println(content);ps.close();}catch (Exception e){e.printStackTrace();}}
5、SQLiteDatabase:

//创建数据库,需要以.db3结尾

SQLiteDatabase db;

db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir()
.toString() + "/my.db3" , null);
//创建表

db.execSQL("create table news_inf(_id integer primary key autoincrement,"
+ " news_title varchar(50),"
+ " news_content varchar(255))");

//执行查询
Cursor cursor = db.rawQuery("select * from news_inf", null);

//执行插入语句

private void insertData(SQLiteDatabase db
, String title , String content)
{
//以占位符形式添加参数
db.execSQL("insert into news_inf values(null , ? , ?)"
, new String[]{title , content});
}

6、SQLiteOpenHelper:
public MyDatabaseHelper(Context context, String name, int version){super(context, name, null, version);}@Overridepublic void onCreate(SQLiteDatabase db){// 第一个使用数据库时自动建表db.execSQL(CREATE_TABLE_SQL);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){System.out.println("--------onUpdate Called--------" + oldVersion + "--->" + newVersion);}
MyDatabaseHelper dbHelper; dbHelper.getReadableDatabase();//得到数据库对象




更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android开机启动分析(一)logo的显示
  4. 自定义控件attrs文件里的属性
  5. Android保存32位BMP格式图片
  6. 关于Chromium的Android(安卓)Studio使用
  7. 解决Android模拟器打不开的问题!...
  8. 利用Handler来更新android的UI
  9. Android(安卓)读取资源文件实例详解

随机推荐

  1. android的call与Phone的实现分析
  2. 搭建Android开发平台(Android(安卓)studio
  3. 在eclipse中查看android源码
  4. Android布局优化之ViewStub(三)
  5. Android使用JNI生成.so文件并调用(使用传
  6. 使用谷歌提供的支持库(Android)
  7. Android(安卓)so 文件进阶 从dlsym()源码
  8. Android开发实践:多线程编程小结
  9. Android(安卓)Nine Patch图片及按钮背景
  10. Android中关于Volley的使用(一)加载图片