基础学习总结(五)---baseAdapter、ContentProvider

小写转大写 : ctrl+shift+F

<ScrollView></ScrollView>滚动条显示视图

ListView与BaseAdapter:

 1 public class MainActivity extends Activity {
 2     private List<Person> pList;
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7
 8         ListView mlistview=(ListView)findViewById(R.id.listview);
 9         //把view与适配器关联
10         mlistview.setAdapter(new MyAdapter());
11     }
12
13     class MyAdapter extends BaseAdapter{
14
15         //获取view数据的长度
16         @Override
17         public int getCount() {
18             return pList.size();
19         }
20
21         @Override
22         public Object getItem(int position) {
23             // TODO Auto-generated method stub
24             return null;
25         }
26
27         @Override
28         public long getItemId(int position) {
29             // TODO Auto-generated method stub
30             return 0;
31         }
32
33         //获得ListView中的某一行的view对象
34         //postion返回当前索引的位置
35         //convertView 缓存对象
36         //parent是listView对象
37         @Override
38         public View getView(int position, View convertView, ViewGroup parent) {
39             TextView tv=null;
40             if(convertView!=null){//判断缓存对象是否为空
41                 tv=(TextView)convertView;
42             }else{//等于null程序刚加载,则创建
43                 tv=new TextView(MainActivity.this);//类名.this  ==上下文
44             }
45             Person p=pList.get(position);//获得指定位置的数据,进行对TextView绑定
46             tv.setText(p.toString());
47             return tv;
48
49         }
50
51         public View getView2(int position, View convertView, ViewGroup parent){
52             View view=null;
53
54             if(convertView==null){
55                 //布局填充器对象,用于把xml布局转换成view对象
56                 LayoutInflater inflator= MainActivity2.this.getLayoutInflater();
57                 view=inflator.inflate(R.layout.listview2_item, null);
58             }else{
59                 view=convertView;
60             }
61
62             //赋值
63             //。。。
64             return view;
65         }
66     }
67 }

ArrayAdapter与simpleAdapter:

 1 public class MainActivity extends Activity {
 2
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7
 8         ListView mlistview=(ListView)findViewById(R.id.list_view);
 9
10         // ArrayAdapter适配器实例
11         String[] textArr={"a","b","c","d","e","f","g","h","i","t","z"};
12         //定义数据适配器
13         //用于显示简单的文本内容
14         //android.R.layout.simple_list_item_1 listview的子条目显示布局的id
15         //textArr 显示在list列表中的数据
16         ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,
17                 android.R.layout.simple_list_item_1,textArr);
18         mlistview.setAdapter(adapter);
19
20
21         //context 上下文
22         //data List<Map<String,Object>> data
23         //resource listview子条目布局的id
24         //from data数据中的map集合里的key
25         //to resource中的id
26         //SimpleAdapter adp=new SimpleAdapter(context,data,resource,from,to);
27         List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();
28         Map<String,Object> map=new HashMap<String,Object>();
29         map.put("name", "zhangsan1");
30         map.put("age", "17");
31         SimpleAdapter adp=new SimpleAdapter(this,data,R.layout.listview_item,
32                 new String[]{"name","age"},new int[]{R.id.tv_name,R.id.tv_ico});
33         mlistview.setAdapter(adp);
34     }
35
36 }

ContentProvider:内容提供者抽象类

实现ContentProvider抽象类需要在配置文件中声明:

//并赋读写权限
<provider android:name=".provider.PersonContentProvider"
android:authorities="包名+类名" android:readPermission="随便.read"
android:writePermission="随便2.write" >
</provider>

声明权限还需要在manifest节点下添加:
<manifest>
<permission android:name="随便.read"></permission>
<permission android:name="随便2.write"></permission>
</manifest>
并在对应访问的工程的Manifest.xml中注册(不然无法访问被拒绝):
<uses permission android:name="随便.read" />
<uses permission android:name="随便2.write" />

 1 public class PersonContentProvider extends ContentProvider{
 2     private static final String AUTHORITY="包名+类名";
 3     private static final int PERSON_INSERT_CODE=0;    //操作person表添加的操作uri匹配码
 4     private Static final int PERSON_DELETE_CODE=1;
 5     private Static final int PERSON_UPDATE_CODE=2;
 6     private Static final int PERSON_QUERYALL_CODE=3;
 7     private static UriMatcher uriMatcher;
 8
 9     //Person表的数据库帮助对象
10     private PersonSQLiteOpenHelper mOpenHelper;
11
12     static{
13         uriMatcher =new uriMatcher(UriMatcher.NO_MATH);
14
15         //添加一些uri(分机号)
16         //content://包名+类名/person/insert
17         uriMatcher.addURI(AUTHORITY,"person/insert",PEROSON_INSERT_CODE);
18         uriMatcher.addURI(AUTHORITY,"person/delete",PERSON_DELETE_CODE);
19         uriMatcher.addURI(AUTHORITY,"person/update",PERSON_UPDATE_CODE);
20         uriMatcher.addURI(AUTHORITY,"person/queryall",PERSON_QUERYALL_CODE);
21     }
22     @override
23     public boolean onCreate(){
24         mOpenHelper=new PersonSQLiteOpenHelper(getContext());
25     }
26
27     @override
28     public String getType(Uri uri){
29
30     }
31
32     @override
33     public Uri insert(Uri uri,ContentValues values){
34         switch(uriMatcher.match(uri)){
35             case PEROSON_INSERT_CODE:
36                 SQLiteDatabase db= mOpenHelper.getWriteableDatabase();
37                 if(db.isopen()){
38                     long  id = db.insert("person",null,values);
39                     db.close();
40                     return contentUris.withAppendedId(uri,id);
41                 }
42                 break;
43
44                 default:
45                 throw new IllegalArgumentException("uri不匹配":+uri);
46         }
47         return null;
48     }
49
50     @override
51     public int delete(Uri uri,String selection,String[] selectionArgs){
52             //..
53     }
54
55     @override
56     public int update(Uri uri,ConentValues values,String selection,String[] selectionArgs){
57         //...
58     }
59
60     @override
61     public Curos query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder){
62         Switch(uriMatcher.match(uri)){
63             case PERSON_QUERYALL_CODE:
64                 SQLiteDatabase db=mOpenHelper.getReadableDatabase();
65                 if(db.isopen()){
66                     Cusor cor=db.query("person",projection,selection,selectionArgs,null,null,sortOrder);
67                     return cor;
68                     //db.close();返回cusor结果集时不可以关闭数据库
69                 }
70             break;
71             default:
72             throw new IllegalArgumentException("uri不匹配:"+uri);
73         }
74     }
75
76 }
77
78 public class PersonContentResolver{
79     public void PersonInsert(){
80         Uri uri=Uri.Parser.("content://包名+类名/person/Insert");
81
82         //内容提供者对象
83         ContentResolver resolver = getContext().getContentResolver();
84         ContentValues values=new ContentValues();
85         value.put("name","小风");
86         value.put("age","19");
87
88         uri=resolver.insert(uri,values);
89         long id=ContentUris.parseId(uri);
90         log.i(tag,id);
91     }
92
93 }

时间: 2024-10-01 00:37:02

基础学习总结(五)---baseAdapter、ContentProvider的相关文章

javascript基础学习(五)

javascript之函数 学习要点: 函数的介绍 函数的参数 函数的属性和方法 系统函数 一.函数的介绍 1.函数就是一段javascript代码.可以分为用户自定义函数和系统函数.   如果一个函数是javascript内置的函数,就称为系统函数.如果函数是自己编写的函数,就是自定义函数. 2.在javascript用function来定义一个函数.function 函数名(参数1,参数2,...){<语句块>  return 返回值} (PS:return语句可以省略) 3.函数的嵌套定

MongDB基础学习(五)——投影,分页,排序,聚合

MongDB基础学习(五)--投影,分页,排序,聚合 基础语法的学习 马上就要过年啦,明天也是情人,后天就要放假啦,希望自己能够在放假前把五和六的章节写完.很高兴的一点,昨天看到我写的"[MongoDB for Java]Java操作MongoDB"能够被放到CSDN博客的首页的头条,本章节的学习内容如下: (1)    MongoDB的投影的语法和示例学习 (2)    MongoDB的Limit()和Skip()方法学习,从而达到分页的效果 (3)    MongoDB的sort(

CSS基础学习十五:盒子模型补充之外边距合并

今天继续接着CSS盒子模型补充,CSS基础学习十三:盒子模型和CSS基础学习十四:盒子模型补充之display属 性设置都是介绍了盒子模型中的内容概括.开始今天的主题:外边距合并. 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合 并的外边距的高度中的较大者. (1)外边距合并 外边距合并叠加是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外 边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的

salesforce 零基础学习(五十二)Trigger使用篇(二)

第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. 十七篇链接:salesforce 零基础学习(十七)Trigger用法 有的时候对于sObject的trigger处理复杂的情况下,比如一个sObject的before update要实现功能1,2.....n功能情况下,Handler中需要在before update写实现功能1--n的代码.然而

Linux基础学习(五)

上一章我们学习了用户的权限以及用户的管理,这一章我们就来学习文件的权限和管理 这一章的内容十分重要,因为Linux中的一切都是文件.所以文件的管理显得尤为重要 文件权限 1.文件属性的查看: ls -l filename -|rw-r--r--.|1| root| root|  46| Oct  1 05:03 |filename 1      2     3    4    5     6         7          8 在这里,我们把这个命令的输出人工的分为了9段(输出中间的分隔符

Java基础学习第五天——方法与数组

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法 方法 方法就是完成特定功能的代码块,即函数. 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用public static,后详解. 返回值类型:就是功能结果的数据类型. 方法名:符合命名规则即可,方便我们的调用. 参数: 实际参数:就是实际参与运算的.

Android项目之HomeHealth基础学习1:Baseadapter

重写Baseadapter时,我们知道需要重写以下四个方法:getCount,getItem(int position),getItemId(int position),getView方法, getCount决定了listview一共有多少个item,而getView返回了每个item项所显示的view. 可是getItem(int position),getItemId(int position)有什么作用呢?该怎么重写呢? 首先看 getItem: @Override public Obje

No_16_0224 Java基础学习第五天

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法方法方法重载数组Java中的内存分配数组操作常见的两个小问题数组练习 第三章Java基础语法 方法 简单的说:方法就是完成特定功能的代码块 在很多语言里面都有函数的定义 函数在Java中被称为方法 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用publi

Java基础学习笔记五 Java基础语法之面向对象

面向对象 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式.面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.例如:公司打扫卫生(擦玻璃.扫地.拖地.倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生打扫干净了.面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了.例如,公司打扫

salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)

此篇参考git代码:https://github.com/pdalcol/Zippex 学习salesforce可以访问一个朋友的网站:https://www.xgeek.net 首先感谢git上提供代码的大神,学到了新的知识.salesforce不像java提供生成Zip文件的类库,通过git上copy的代码可以实现此功能,具体的使用方法以及API可以查看上方git链接. 概述:实例模拟三个上传组件,加上一个下载Zip包按钮,本地选择需要上传的文件,点击按钮后便会下载成一个压缩文件,压缩文件中