`
herestay
  • 浏览: 36130 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQLite进阶:Android上的SQLite常用操作

阅读更多

昨天简单地做一了一个列表展示,现在将增加/修改/删除方法都给加上了,本次增加的内容比较多,比如常见按钮的事件,列表长按事件,Activity之间的跳转及传递参数,按键事件的监听等,希望对初学的朋友有些帮助,同时欢迎老鸟给我做Code review,需要改进的地方,还请指出,谢谢。

 

 

 

 

 

 

 

 

 

 

下面逐个介绍一个代码,数据库辅助类:DBOpenHelper

 

package com.van.sqlite.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 数据库辅助类。
 * @author Van
 *
 */
public class DBOpenHelper extends SQLiteOpenHelper{
	
	/**数据库名称*/
	private static final String DATABASE_NAME="MyAppDB";
	/**数据库版本*/
	private static final int DATABASE_VERSION=1;
	/** 创建数据表语句*/
	private static final String DDL_CREATE_TABLE_APPINFO="CREATE TABLE IF NOT EXISTS AppInfo (appId integer primary key autoincrement,appName text,appDescription text, remark text)";

	/**
	 * 实例化数据库连接.
	 * @param context
	 */
	public DBOpenHelper(Context context){
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
		/**初始化数据表*/
		this.getWritableDatabase().execSQL(DDL_CREATE_TABLE_APPINFO);
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
	}
}

 

 

针对AppInfo数据表的辅助类,内含增删查改方法:AppInfoHelper

 

 

package com.van.sqlite.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class AppInfoHelper {
	
	
	private DBOpenHelper helper;  
	
	/**
	 * 构造
	 * @param context
	 */
	public AppInfoHelper(Context context){
		this.helper=new DBOpenHelper(context);
	}
	
	
	
	/**
	 * 查询
	 * @param tableName
	 * @return
	 */
	public Cursor select(String sql) {  
		
		SQLiteDatabase db=helper.getWritableDatabase(); 
		 
        try{
        	Cursor cursor=db.rawQuery(sql,null);  
        	cursor.moveToFirst();
        	return cursor;
        	
        }catch(Exception ex){
        	ex.printStackTrace();
        }finally{
        	if(db.isOpen()){
        		db.close();
        	}
        }
        
        return null;
    }  
	
	
	
	
	
	
	/**
	 * 新增方法.
	 * @param appName
	 * @param appDescription
	 * @param remark
	 */
	public void addAppInfo(String appName,String appDescription,String remark){
		

        ContentValues values=new ContentValues(); 
        values.put("appName", appName);  
        values.put("appDescription", appDescription);  
        values.put("remark", remark);  
        
        SQLiteDatabase db=helper.getWritableDatabase();
        
        try{
        	db.insert("AppInfo", null, values);  
        	
        }catch(Exception ex){
        	ex.printStackTrace();
        }finally{
        	if(db.isOpen()){
        		db.close();
        	}
        }
	}
	
	/**
	 * 编辑应用信息.
	 * @param appId
	 * @param appName
	 * @param appDescription
	 * @param remark
	 */
	public void editAppInfo(int appId,String appName,String appDescription,String remark){
		
        ContentValues values=new ContentValues(); 
        values.put("appName", appName);  
        values.put("appDescription", appDescription);  
        values.put("remark", remark);  
        
        SQLiteDatabase db=helper.getWritableDatabase();

        //条件
        String[] whereValue ={ Integer.toString(appId) }; 

        try{
        	db.update("AppInfo", values, "appId=?", whereValue);  
        }catch(Exception ex){
        	ex.printStackTrace();
        }finally{
        	if(db.isOpen()){
        		db.close();
        	}
        }
        
	}
	
	
	/**
	 * 删除应用信息.
	 * @param appId
	 */
	public void deleteAppInfo(int appId){
    	
        SQLiteDatabase db=helper.getWritableDatabase();
        
        //条件
        String[] whereValue ={ Integer.toString(appId) }; 
        
        try{
       	 
        	db.delete("AppInfo", "appId=?", whereValue);
        }catch(Exception ex){
        	ex.printStackTrace();
        }finally{
        	
        	if(db.isOpen()){
        		db.close();
        	}
        }
   }
	
	
	
	
	
	
	

}



 

 

 

AppInfo数据适配器,用于列表显示的适配器:AppInfoListAdapter

 

package com.van.sqlite.adapter;

import java.util.ArrayList;
import java.util.HashMap;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.SimpleAdapter;

import com.van.sqlite.activity.R;
import com.van.sqlite.db.DBOpenHelper;

public class AppInfoListAdapter {
	
	
	
	private Context context;

	
	public AppInfoListAdapter(Context context){
		this.context=context;
	}

	 /** 
     * 查询AppInfo返回Map集合 
     * @return 
     */  
    private ArrayList<HashMap<String, Object>> fillList(){  
          
         //生成动态数组,并且转载数据    
        ArrayList<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>();    
          
        DBOpenHelper helper=new DBOpenHelper(context);  
        SQLiteDatabase db=helper.getReadableDatabase();  
          
        try{  
            Cursor cursor=db.rawQuery("SELECT * FROM AppInfo", null);   
            cursor.moveToFirst();  
  
            if(cursor.moveToFirst()) {   
            	
            	while (!cursor.isAfterLast()) { 
                    Integer appId = cursor.getInt(cursor.getColumnIndex("appId"));    
                    String appName = cursor.getString(cursor.getColumnIndex("appName"));   
                    String appDescription = cursor.getString(cursor.getColumnIndex("appDescription"));   
                      
                    HashMap<String, Object> map = new HashMap<String, Object>();    
                    map.put("appId",appId);    
                    map.put("appName", appName);    
                    map.put("appDescription", appDescription);    
                    dataList.add(map);    
                    cursor.moveToNext();
            	}
                    
            }    
              
        }catch(Exception ex){  
            ex.printStackTrace();  
        }finally{  
              
            if(db.isOpen()){  
                db.close();  
            }  
        }  
        return dataList;  
    }  
	
	
	
	/** 
     * 填充数据,取得数据适配器. 
     * @param listData 
     * @return 
     */  
    public SimpleAdapter getAdapter(Context context){  
          
         //生成适配器,数组===》ListItem    
        SimpleAdapter adapter = new SimpleAdapter(context,  
        											fillList(),//数据来源     
                                                    R.layout.list_item,//ListItem的XML实现    
                                                    //动态数组与ListItem对应的子项            
                                                    new String[] {"appName", "appDescription"},     
                                                    //ListItem的XML文件里面的两个TextView ID    
                                                    new int[] {R.id.textView_appName,R.id.textView_appDescription});    
          
        return adapter;   
    }  
	
	
	
	
	
	

}

 

 

 

 

 

3个Activity,主界面显示/增加/修改

SQLiteDemoActivity

 

package com.van.sqlite.activity;  

import java.util.HashMap;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.van.sqlite.adapter.AppInfoListAdapter;
import com.van.sqlite.db.AppInfoHelper;
  
public class SQLiteDemoActivity extends Activity {  
	
	
	private ListView listView;
	private AppInfoListAdapter adapter;
	
	
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        
        listView=(ListView)findViewById(R.id.listView_appList);  
        
        //获取数据适配器
        adapter=new AppInfoListAdapter(this);
 
        //添加并且显示    
        listView.setAdapter(adapter.getAdapter(this));    
        
        
        //跳转到新增窗口
        Button addButton=(Button)findViewById(R.id.button_to_add);
        addButton.setOnClickListener(new OnClickListener(){
        	@Override
			public void onClick(View arg0) {

				//打开新的窗口
				Intent intent=new Intent();
				intent.setClass(SQLiteDemoActivity.this, AddAppInfoActivity.class);
				startActivity(intent);
				//结束当前
				SQLiteDemoActivity.this.finish();
			}
        });
        
        
        //数据列表点击操作
        listView.setOnItemClickListener(new OnItemClickListener() {

			@SuppressWarnings("unchecked")
			@Override
			public void onItemClick(AdapterView<?> adapterView, View view, int index,long arg3) {
				
				ListView listView = (ListView)adapterView;
				HashMap<String, Object> map = (HashMap<String, Object>) listView.getItemAtPosition(index);
				
				//打开新的窗口
				Intent intent=new Intent();
				intent.setClass(SQLiteDemoActivity.this, EditAppInfoActivity.class);
				//将appId传入编辑窗口
				intent.putExtra("appId", Integer.parseInt(map.get("appId").toString()));
				startActivity(intent);
				//结束当前
				SQLiteDemoActivity.this.finish();
			}
		});
        
        
        
        //添加长按点击   
        listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {   
               
            @Override  
            public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
                menu.setHeaderTitle("列表操作");    
                menu.add(0, 0, 0, "删除应用信息");   
            }
        });  
        
        
    }  

    
    
    @Override
	 public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode == KeyEvent.KEYCODE_BACK){//返回按钮
			
			AlertDialog.Builder builder = new Builder(SQLiteDemoActivity.this); 
	        builder.setMessage("确实要退出程序吗?"); 
	        builder.setTitle("提示"); 
	        builder.setPositiveButton("确认", 
	                new android.content.DialogInterface.OnClickListener() { 
	                    
	                    public void onClick(DialogInterface dialog, int which) { 
	                        dialog.dismiss(); 
	                        SQLiteDemoActivity.this.finish(); 
	                    } 
	                }); 
	        builder.setNegativeButton("取消", 
	                new android.content.DialogInterface.OnClickListener() { 
	                 
	                    public void onClick(DialogInterface dialog, int which) { 
	                        dialog.dismiss(); 
	                    } 
	                }); 
	        builder.create().show(); 

	        return true;
		}
		
		return false;
	}
    

    /**
     * 删除应用.
     * @param appId
     */
    public void delete(int appId){
    	 AppInfoHelper appInfoHelper=new AppInfoHelper(this);
         appInfoHelper.deleteAppInfo(appId);
         Toast.makeText(SQLiteDemoActivity.this, "应用删除成功!", Toast.LENGTH_SHORT).show();  
         //添加并且显示    
         listView.setAdapter(adapter.getAdapter(this));   
    }
    
    
    //长按菜单响应函数   
    @SuppressWarnings("unchecked")
	@Override  
    public boolean onContextItemSelected(MenuItem item) {   
    	
    	AdapterView.AdapterContextMenuInfo m = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    	HashMap<String, Object> map = (HashMap<String, Object>) listView.getItemAtPosition(m.position);
    	int appId=Integer.parseInt(map.get("appId").toString());
    	//调用方法,删除
    	delete(appId);
        return super.onContextItemSelected(item);   
    }   
    
    
    
}  

 

 

 

AddAppInfoActivity

 

package com.van.sqlite.activity;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.van.sqlite.db.AppInfoHelper;

public class AddAppInfoActivity extends Activity{
	
	
	@Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.add);  
        
        Button saveButton=(Button)findViewById(R.id.button_save);
        saveButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				add();//添加数据
			}
		});
    }  

	/**
	 * 添加数据方法.
	 */
	public void add(){
		
        EditText et_appName=(EditText)findViewById(R.id.editText_appName);
        EditText et_appDescription=(EditText)findViewById(R.id.editText_appDescription);
        EditText et_remark=(EditText)findViewById(R.id.editText_remark);

        String appName=et_appName.getText().toString();  
        String appDescription=et_appDescription.getText().toString();  
        String remark=et_remark.getText().toString();  

        AppInfoHelper appInfoHelper=new AppInfoHelper(this);
        appInfoHelper.addAppInfo(appName, appDescription, remark);
        
        Toast.makeText(AddAppInfoActivity.this, "应用信息添加成功!", Toast.LENGTH_SHORT).show();  
    	Intent intent = new Intent(AddAppInfoActivity.this,SQLiteDemoActivity.class);
    	startActivity(intent);
    	AddAppInfoActivity.this.finish();
	}
	
	
	
	@Override
	 public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode == KeyEvent.KEYCODE_BACK){//返回按钮
			Intent intent = new Intent();
			intent.setClass(AddAppInfoActivity.this, SQLiteDemoActivity.class);
			startActivity(intent);// 启动新的Activity
			AddAppInfoActivity.this.finish();// 结束就的Activity 
		}
		
		return false;
	}
	
	
	
	
}



 

EditAppInfoActivity

 

package com.van.sqlite.activity;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.van.sqlite.db.AppInfoHelper;

public class EditAppInfoActivity extends Activity{
	
	
	private int paramAppId;
	
	@Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.edit);  
        
        //绑定数据
        bindValue();
        
        //绑定事件
        Button editButton=(Button)findViewById(R.id.button_edit_save);
        editButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				edit();
			}
		});
      
    }
	
	/**
	 * 查询赋值.
	 */
	public void bindValue(){
		
		//取得编号
		paramAppId= this.getIntent().getExtras().getInt("appId");
		
		//查询数据
        AppInfoHelper appInfoHelper=new AppInfoHelper(this);

        Cursor cursor=appInfoHelper.select("SELECT * FROM AppInfo WHERE appId="+paramAppId);   
        
  
        if(cursor.moveToFirst()) {    
                String appName = cursor.getString(cursor.getColumnIndex("appName"));   
            String appDescription = cursor.getString(cursor.getColumnIndex("appDescription"));  
            String remark = cursor.getString(cursor.getColumnIndex("remark"));  
            
            EditText et_appName=(EditText)findViewById(R.id.editText_edit_appName);
            EditText et_appDescription=(EditText)findViewById(R.id.editText_edit_appDescription);
            EditText et_remark=(EditText)findViewById(R.id.editText_edit_remark);
            
            et_appName.setText(appName);
            et_appDescription.setText(appDescription);
            et_remark.setText(remark);
        }    
	}
	
	/**
	 * 编辑应用。
	 */
	private void edit(){
		
		 	EditText et_appName=(EditText)findViewById(R.id.editText_edit_appName);
	        EditText et_appDescription=(EditText)findViewById(R.id.editText_edit_appDescription);
	        EditText et_remark=(EditText)findViewById(R.id.editText_edit_remark);
	        

	        String appName=et_appName.getText().toString();  
	        String appDescription=et_appDescription.getText().toString();  
	        String remark=et_remark.getText().toString();  

	        AppInfoHelper appInfoHelper=new AppInfoHelper(this);
	        appInfoHelper.editAppInfo(paramAppId, appName, appDescription, remark);
	        
	    	Toast.makeText(EditAppInfoActivity.this, "应用信息编辑成功!", Toast.LENGTH_SHORT).show();  
        	Intent intent = new Intent(EditAppInfoActivity.this,SQLiteDemoActivity.class);
        	startActivity(intent);
        	EditAppInfoActivity.this.finish();
	}
	
	 @Override
	 public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode == KeyEvent.KEYCODE_BACK){//返回按钮
			
			Intent intent = new Intent();
			intent.setClass(EditAppInfoActivity.this, SQLiteDemoActivity.class);
			startActivity(intent);// 启动新的Activity
			EditAppInfoActivity.this.finish();// 结束就的Activity 
		}
		
		return false;
	}
	
	
}

 

 

几个布局文件:
main.xml

 

<?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:orientation="vertical" >

     
          
         <Button
             android:id="@+id/button_to_add"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/add" />

 



        <ListView
            android:id="@+id/listView_appList"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

        </ListView>
      
    </LinearLayout>  



 

list_item.xml

 

<?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:orientation="vertical" >  
      
        <TextView  
            android:id="@+id/textView_appName"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:textAppearance="?android:attr/textAppearanceMedium" />  
      
        <TextView  
            android:id="@+id/textView_appDescription"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout> 

 

 

add.xml

 

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView_appName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/appName"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText_appName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPostalAddress" />

    <TextView
        android:id="@+id/textView_appDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/appDescription"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText_appDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/textView_remark"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/remark"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText_remark"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:inputType="text"/>

    <Button
        android:id="@+id/button_save"
        android:layout_width="100dp"
        android:layout_marginTop="15dp"
        android:layout_height="wrap_content"
        android:text="@string/save" />

</TableLayout>

 

 

edit.xml

 

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView_edit_appName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/appName"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText_edit_appName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPostalAddress" />

    <TextView
        android:id="@+id/textView_edit_appDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/appDescription"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText_edit_appDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/textView_edit_remark"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/remark"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText_edit_remark"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:inputType="text"/>

    <Button
        android:id="@+id/button_edit_save"
        android:layout_width="100dp"
        android:layout_marginTop="15dp"
        android:layout_height="wrap_content"
        android:text="@string/edit" />

</TableLayout>

 

 

神马String变量就不贴了,看看效果先,主界面:

 

添加,点击主界面添加按钮进入添加页面:

 

编辑,点击列表直接跳转到编辑页面:

 

删除,长按类别项出现删除操作:

 

分享到:
评论

相关推荐

    Android开发进阶:从小工到专家

    《Android开发进阶:从...总之,《Android开发进阶:从小工到专家》是一部全方位指导Android开发者进阶的宝典,通过阅读和实践,读者将能够掌握高级开发技巧,提升自己的专业能力,从而在Android开发领域更上一层楼。

    sqlite进阶教程

    SQLite 是一个轻量级的、基于 SQL 的关系型数据库管理系统,广泛应用于移动设备开发,如 Android 和 iOS。本文将深入探讨 SQLite,通过一系列步骤帮助读者从基础到精通掌握其使用。 1. **创建数据库** 创建 SQLite...

    Android开发进阶:如何读写Android文件.pdf

    除了使用基本的输入输出流,Android还提供了其他的文件操作接口,如`File`类用于文件操作,`SharedPreferences`用于存储键值对,SQLite数据库用于结构化数据存储,以及ContentProvider用于跨应用数据共享。...

    Android数据存储(SQLite进阶2)

    本节我们将深入探讨SQLite的进阶使用,特别是关于查询方面的技巧。SQLite数据库提供了丰富的SQL语法,允许开发者进行复杂的数据检索、更新和管理。 一、SQLite基本操作 1. 创建数据库:在Android中,我们通常通过...

    进阶android源码demo

    "进阶Android源码demo"提供了一系列的实践项目,包括游戏和聊天应用,为开发者提供了丰富的学习资源。下面,我们将深入探讨这些知识点,以帮助你更好地理解和应用Android源码。 1. **Android框架理解**:Android...

    Android高手进阶教程

    《Android高手进阶教程》是一本专为对Android开发有一定基础并希望进一步提升技能的开发者设计的教材。这本书深入探讨了Android平台的核心概念和技术,旨在帮助读者从初级开发者跃升为高级工程师。以下是对该教程中...

    《Android高级进阶》

    《Android高级进阶》这本书是为那些已经掌握了Android基础,并希望深入学习和提升技能的开发者准备的。在Android开发的世界中,"进阶"通常意味着更复杂的技术、更高效的编程实践以及更深层次的理解。以下是对这本书...

    Android进阶知识点一

    在“Android进阶知识点一”这个主题中,我们主要探讨的是Android应用开发的高级概念,特别是在使用Android Studio作为开发环境时遇到的各种技术和实践。这个知识判断器可能是一个小型的交互式应用,它根据用户的选择...

    Android高级进阶--免解压密码

    Android设备上的文件存储分为内部存储和外部存储。书中会介绍如何在不同存储区域读写文件,如何使用SQLite数据库,以及如何利用文件描述符进行文件操作。免解压密码技术往往涉及文件加密和解密,因此,这部分内容...

    android高手进阶教程

    《Android高手进阶教程》是一本专为已经具备一定Android基础知识的开发者准备的深度学习资料。这本教程的出现,旨在帮助读者从初级开发者跃升为Android开发的专家,掌握更多的高级技术和实战经验。 首先,Android...

    基于Java 开发的android心脏病的健康管理系统(客户的+服务器端Django+sqlite3)

    【作品名称】:基于Java 开发的android心脏病的健康管理系统(客户的+服务器端Django+sqlite3) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期...

    AndroidNote, Android 进阶笔记,包含常用的技术框架、博客社区、书籍等。.zip

    《Android进阶笔记》是针对Android开发者的一份详尽学习资料,主要涵盖了各种技术框架、博客社区和推荐书籍,旨在帮助开发者深入理解Android系统并提升专业技能。这份资源的开源特性意味着开发者可以自由访问和分享...

    Android高手进阶指南

    《Android高手进阶指南》是一本专为已经具备一定Android基础的开发者准备的深度学习资料。这本书涵盖了Android开发中的高级主题和技术,旨在帮助读者提升在Android领域的专业技能,成为真正的技术专家。 首先,本书...

    android高级进阶

    《Android高级进阶》是一本面向已有基础的Android开发者,旨在提升其技能和理解的教程。这份完整版的PDF教程涵盖了Android开发中的诸多高级主题,是个人学习和提升的宝贵资源。以下将对其中的关键知识点进行详细阐述...

    android基础到进阶

    《Android基础到进阶:掌握大厂Offer的关键》 在当今的移动开发领域,Android作为全球最广泛使用的操作系统之一,其开发技术的重要性不言而喻。对于开发者来说,从基础到进阶的学习路径是通往成功的关键。本资料集...

    Android_Sqlite:只是android sqlite的一个例子。 这是非常基础的教程

    在这个基础教程中,你可能还会学习如何在Android活动中使用SQLite,如何在用户交互事件中触发数据库操作,以及如何在UI上显示查询结果。理解并掌握这些基本概念和方法,将为你在Android应用中实现复杂的数据管理打下...

    Android开发进阶 从小工到专家.PDF

    - SQLite:Android内置的关系型数据库管理系统,适用于大多数应用场景。 - Room Persistence Library:提供了一个抽象层,使得与SQLite数据库的交互更加简单和高效。 4. **多线程编程**: - 理解主线程和工作...

    高清版 Android高级进阶-顾浩鑫-高清版本-带目录

    由于提供的文件信息中,标题、描述和标签均相同,且部分内容仅有重复的“霏霏”二字,无法提供具体的Android高级进阶知识点。为了满足您的要求,我将基于Android高级进阶这一主题,提供一些该领域的通用知识点,希望...

    Android进阶教程,深入了解开发机制

    资源名称:Android进阶教程,深入了解开发机制 教程内容:1.数据存储分类及SharedPreferences2.使用内部存储3.使用外部存储4.sqlite-15.sqlite-26.sqlite-37.以启动方式使用Service8.以绑定方式使用Service-19.以...

Global site tag (gtag.js) - Google Analytics