2014.10.15总结(ListView)
来源:互联网 发布:对数据库的认识 编辑:程序博客网 时间:2024/05/20 22:28
今天学习ContentResolver的时候又用到了ListView这个控件,好多东西又忘了,看了看书,才想起来了
数据是无法直接传递给ListView的,需要通过适配器来完成,可用ArrayAdapter或自定义适配器来继承ArrayAdapter来构建适配器
private List<Fruit> fruitlist=new ArrayList<Fruit>();FruitAdapter adapter=new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitlist);ListView listView = (ListView) findViewById(R.id.list_view);listView.setAdapter(adapter);FruitAdapter是自定义的适配器,继承ArrayAdapter,里面的参数分别是1.上下文,2.需要传入的布局,3.要传入的数据(可以直接传入,通常是后续传入,这里只是写上List类的名字)
然后通过listView.setAdapter(adapter);方法,把构建好的适配器对象传递进去,这样ListView和数据之间就建立了联系。
今天写的ContentResolver,通过内容提供器访问外部接口
想要访问内容提供器中共享的数据,需要借助ContentResolver类,可以通过Context中的getContentResolver()方法来获取该类的实例。
ContentResolver提供了一系列的方法来对数据进行CRUD操作,但又有不同,传的参数不是表名,而是用Uri参数代替,Uri由两部分组成,权限(authority)和路径(path),权限是用于区分不同的程序,路径是用于区分同一应用程序中的不同的表。权限一般采用的是包名+provider,路径就是表的名称。
例如内容URI最标准的格式为:content://com.example.app.provider/table1
很显然,URI很清楚的表达了我们要访问哪个程序的哪张表,得到URI字符串之后,还需要解析成Uri对象,调用Uri.parse()方法。
Uri uri=Uri.parse("content://com.example.app.provider/table1");
查询:
之后就可以使用Uri对象来查询table中的数据了Cursor cursor=getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
后面几个是约束条件,用的时候查一下就好了
ContentValues values=new ContentValues();values.put("colum1","text");
增加:
getContentResolver().insert(uri,values);
更新:
getContentResolver().update(uri,values,"colum1=?",new String[]{"text"});删除:
getContentResolver().delete(uri,values,"colum1=?",new String[]{"text"});
例子:
读取联系人
public class MainActivity extends Activity {ListView contactsView;ArrayAdapter<String> adapter;List<String> contactsList=new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); contactsView=(ListView) findViewById(R.id.contact_view); adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactsList); contactsView.setAdapter(adapter); readContacts(); } private void readContacts() {Cursor cursor=null;try {cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);while (cursor.moveToNext()) {String displayName=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));contactsList.add(displayName+"\n"+number);}} catch (Exception e) {e.printStackTrace();}finally{if(cursor!=null){cursor.close();}}}}
readContacts()上面的就是在本文最上面写的,
Uri没用是因为ContactsContract.CommonDataKinds.Phone类已经做好了封装,提供CONTENT_URI常量,它就是Uri.prase()方法解析出来的结果,然后通过遍历,把姓名和手机号取出来,姓名对应的常量是ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,手机号对应的常量是ContactsContract.CommonDataKinds.Phone.NUMBER,之后添加到LiewView对象里面,最后一定要记得吧Cursor对象关闭
之后在AndroidManifest.xml文件中添加权限即可
<uses-permission android:name="android.permission.READ_CONTACTS"/>
以上是采用现有的内容提供器来读取和操作相应应用程序中的数据
- 2014.10.15总结(ListView)
- ListView总结(一)
- ListView总结
- ListView总结
- ListView总结
- ListView总结
- ListView总结
- ListView总结
- ListView总结
- ListView总结
- ListView总结
- Listview总结
- ReactNative之ListView学习总结(四)listview 属性
- 关于ListView的一点总结(未完成)
- ListView常用用法2(分类总结)
- 2010.10.11总结(ListView,广播)
- Android中ListView的总结(1)
- android-listview的总结(不定期更新)
- javascript命名空间的学习
- Oracle中job的使用详解
- hdu5062 简单题
- Spring Data —— 完全统一的API?
- 指针数组&&数组指针||指针函数&&函数指针
- 2014.10.15总结(ListView)
- Cocos2d-x3.2 Grid3D网格动作
- 获取外置卡、内置卡、USB路径的封装类
- erlang学习笔记:语法基础
- centos 下安装memcached
- 【Java.IO】I/O 【字节】【处理流】 - 之 - 【压缩流】 - ZipInputStream,ZipOutputStream
- Oracle中job的实例
- [dfs+水] hdu 4462 Scaring the Birds
- 16进制数据流转换成C语言数组