小写转大写 : 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