setChoiceMode(ListViewCHOICE_MODE_MULTIPLE); // 多选
setChoiceMode(ListViewCHOICE_MODE_SINGLE) // 单选
选择后的效果是要子view支持才可以的。需要checkable的子view才可以,如果你是普通的textview之类的。。可能选中和不选中效果是一样的。
至于写入数据库,android上用sqlite。。。
*** 作方法是用FileInputStream读取原数据库,再用 FileOutputStream把读取到的东西写入到那个目录。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 packagecomandroidImportDatabase; importjavaioFile; importjavaioFileNotFoundException; importjavaioFileOutputStream; importjavaioIOException; importjavaioInputStream; importandroidcontentContext; importandroiddatabasesqliteSQLiteDatabase; importandroidosEnvironment; importandroidutilLog; publicclassDBManager { privatefinalintBUFFER_SIZE =400000; publicstaticfinalString DB_NAME ="countriesdb";//保存的数据库文件名 publicstaticfinalString PACKAGE_NAME ="comandroidImportDatabase"; publicstaticfinalString DB_PATH ="/data" + EnvironmentgetDataDirectory()getAbsolutePath() +"/" + PACKAGE_NAME; //在手机里存放数据库的位置 privateSQLiteDatabase database; privateContext context; DBManager(Context context) { thiscontext = context; } publicvoidopenDatabase() { thisdatabase =thisopenDatabase(DB_PATH +"/"+ DB_NAME); } privateSQLiteDatabase openDatabase(String dbfile) { try{ if(!(newFile(dbfile)exists())) { //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库 InputStream is =thiscontextgetResources()openRawResource( Rrawcountries);//欲导入的数据库 FileOutputStream fos =newFileOutputStream(dbfile); byte[] buffer =newbyte[BUFFER_SIZE]; intcount =0; while((count = isread(buffer)) >0) { foswrite(buffer,0, count); } fosclose(); isclose(); } SQLiteDatabase db = SQLiteDatabaseopenOrCreateDatabase(dbfile, null); returndb; }catch(FileNotFoundException e) { Loge("Database","File not found"); eprintStackTrace(); }catch(IOException e) { Loge("Database","IO exception"); eprintStackTrace(); } returnnull; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 packagecomandroidImportDatabase; importjavautilArrayList; importandroidappActivity; importandroiddatabaseCursor; importandroiddatabasesqliteSQLiteDatabase; importandroidosBundle; publicclassTaxiActivityextendsActivity { privateSQLiteDatabase database; ArrayList<CityClass> CITY; @Override publicvoidonCreate(Bundle savedInstanceState) { superonCreate(savedInstanceState); setContentView(Rlayoutmain); database = SQLiteDatabaseopenOrCreateDatabase(DBManagerDB_PATH +"/"+ DBManagerDB_NAME,null); CITY = getCity(); // do something with CITY databaseclose(); } privateArrayList<CityClass> getCity() { Cursor cur = databaserawQuery("SELECT cityid_city, cityname FROM taxi, city WHERE cityid_city = taxiid_city GROUP BY cityid_city",null); if(cur !=null) { intNUM_CITY = curgetCount(); ArrayList<CityClass> taxicity =newArrayList<CityClass>(NUM_CITY); if(curmoveToFirst()) { do{ String name = curgetString(curgetColumnIndex("name")); intid = curgetInt(curgetColumnIndex("id_city")); CityClass city =newCityClass("",0); Systemoutprintln(name); //额外添加一句,把select到的信息输出到Logcat citycity_name = name; citycity_id = id; taxicityadd(city); }while(curmoveToNext()); } returntaxicity; }else{ returnnull; } } } 查看输出的结果:
Android 怎样在应用程序中向文件里写入数据?在AndroidManifestxml中添加, <uses-permission android:name="androidpermissionWRITE_EXTERNAL_STORAGE" />,解决!
另外了解一下android的数据存储方式:文件流的读取,SQLite,Content Provider以及Preference。 注:resource和assets中的文件用户方面是只可以读取不能够进行写的 *** 作的。
Content Provider作为程序之间唯一共享数据途径,用在这里不是很合适。所以,
第一种方式,使用FileInputStream,FileOutputStreamdui类实现文件I/O *** 作,直接往手机中存储数据。
第二种方式,使用SQLite,通过SQLiteDatabase类中方法 *** 作数据。
第三种方式,Preference用于存储简单数据类型的数据,一些设置信息的保存。个人认为用在这里最合适。 它利用键值对存储的。例:
存储:SharedPreferencesEditor editor =spedit();
editorputString(KEY_TEXT,"yonghu");
editorcommit();
获取 :sp =getPreferences(MODE_PRIVATE);
String result =spgetString(KEY_TEXT,null)
Android保存数据几种常用方法解析
它应用于手机中能够帮助我们实现许多需求。比如今天为大家介绍的Android保存数据,就是其中一个比较重要的 *** 作技巧。Android组件相关概念总结Android传值方法细讲Android横竖屏切换正确实现方式分享Android开发环境相关配置概览Android NDK具体作用讲解对于我们所熟悉的大部分软件都有一个比较典型的特点,应用现有的数据根据不同的需求来得到相应的结果。例如,我们最常用的Officeword、Excel、PowerPoint等办公软件,它们都是帮助我们完成某种特定的需求,同时由其所产生的数据或者文档又可以被其它软件所读取和做进一步的优化等等,在这个层面上可以看成是这些软件通过相同的文件标准来共享数据。但是对于Android最大的不同点在于,其平台上的应用软件所存储的数据或者文件是私有,仅仅可以通过它自身才可以访问其所包含的数据资源。那么基于这样的限制,该如何在Android平台上实现不同程序间的数据共享呢?答案非常简单 – 应用ContentProviders,这是建立在Android平台上用于定义统一的数据标准。Android提供了针对不同数据类型的ContentProviders来满足各种需要。例如:Image、Audio、Video和通讯录信息类等。阅读下边的文档之前,最好先熟悉Content Providers的概念。有了上边所提到Content Providers,接下来就要处理在共享文件过程中的存储环节了,这里有四种方法分别适用于不同情况的需求。它们都各自有相应的优缺点,所以当开发者决定选择应用哪种方法之前,先要考虑当前所 *** 作的情况是否适合于所选择的方法。Preferences Files Databases Network 接下来将依次介绍上诉四个Android保存数据方法:Preferences从其保存数据的结构来分析,这是一个相对较轻量级的存储数据的方法。类似于我们常用的ini文件保存软件初始化设置,同样在Android平台常用于存储较简单的参数设置。例如,可以通过它保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。通过ContextgetSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用ActivitygetPreferences()方法保持数据私有。需要着重强调一点,无法直接在多个程序间共享Preferences数据(不包括使用Content Providers)。通过一个实例来了解实际使用方法:import androidappActivity; import androidcontentSharedPreferences; public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; Override protected void onCreate(Bundle state){ superonCreate(state); // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settingsgetBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ superonStop(); // Save user preferences We need an Editor object to // make changes All objects are from androidcontextContext SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferencesEditor editor = settingsedit(); editorputBoolean("silentMode", mSilentMode); // Don't forget to commit your edits!!! editorcommit(); } } Files从这是第二种方法,可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样在默认的状态下,文件是不能在不同的程序间共享。写文件:调用ContextopenFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。读取文件:调用ContextopenFileInput()方法通过制定的路径和文件名来返回一个标准的Java FileInputStream对象。
(注意:在其它程序中将无法应用相同的路径和文件名来 *** 作文件)另外编译程序之前,在res/raw/tempFile中建立一个static文件,这样可以在程序中通过ResourcesopenRawResource (RrawmyDataFile)方法同样返回一个InputStream对象,直接读取文件内容。Databases在Android API中包括了应用SQLite databases的接口,每个程序所创建的数据库都是私有的,换句话说,程序间无法相互访问对方的数据库。在程序中创建SQLiteDatabase对象,其中包含了大部分与database交互的方法,例如:读取数据或者管理当前数据。可以应用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法来创建新的数据库。对于SQLitedatabase而言,其强大和方便的功能为Android提供了强有力的存储功能。特别是存储一些复杂的数据结构,例如:Android特别为通讯录创建了特有的数据类型,其中包含了非常多的子集而且涵盖了大部分的数据类型 “First Name” “Last Name” “PhoneNumber”和“Photo”等。Android可以通过Sqlite3 database tool来查看指定数据库中表的内容,直接运行SQL命令来快速便捷的直接 *** 作SQLite database。
你好,解决办法如下所示:
首先,我们为布局代码新增一个" 添加数据 "的按钮。其中,要记得为线性布局设置一个orientation(方向),比如设置为vertical(垂直)。
然后,我们为按钮设置监听器,ContentValues对象提供了一个put方法来添加数据。put方法中有两个参数,第一个参数为数据库中对应的列名,第二个参数为相应的数据。添加完参数后,我们用SQLiteDatabase对象提供的insert方法把数据插入数据库。insert方法中有三个参数,第一个参数为表名;第二个参数用于在未添加数据的情况下,自动赋值为NULL,一般传入null即可;第三个参数为ContentValues对象的值。
如果我们还要传入一组数据,就要记得在传入数据之前,添加valuesclear()语句来把之前的数据清除掉。
SQL数据的一个主要原则是模式:数据库是如何组织的一个正式声明。模式被反映在你用于创建数据库的SQL语句中。你可能会发现,它有助于创建伴侣类,即约束(contract)类,这个类使用系统性的和自记录的方式来明确的指定你的模式的布局。约束(contract)类是一个定义URIs、表名和列名的常量容器。在相同包中的所有类都可以这个约束类中的常量。这样就会一处修改,全局有效。组织约束类的一个好方法是把定义放到类的根层次,以便它对整个数据库有效。
以上就是关于android listview两种布局,一种单选一种多选,怎样获得选中状态,并存入数据库全部的内容,包括:android listview两种布局,一种单选一种多选,怎样获得选中状态,并存入数据库、Android如何导入已有的外部数据库(在raw下自己导入db文件)、Android 怎样在应用程序中向文件里写入数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)