基础学习总结(五)---baseAdapter、ContentProvider
小寫轉(zhuǎn)大寫 : 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與適配器關(guān)聯(lián) 10 mlistview.setAdapter(new MyAdapter()); 11 } 12 13 class MyAdapter extends BaseAdapter{ 14 15 //獲取view數(shù)據(jù)的長度 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程序剛加載,則創(chuàng)建 43 tv=new TextView(MainActivity.this);//類名.this ==上下文 44 } 45 Person p=pList.get(position);//獲得指定位置的數(shù)據(jù),進行對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布局轉(zhuǎn)換成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 } View CodeArrayAdapter與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 //定義數(shù)據(jù)適配器 13 //用于顯示簡單的文本內(nèi)容 14 //android.R.layout.simple_list_item_1 listview的子條目顯示布局的id 15 //textArr 顯示在list列表中的數(shù)據(jù) 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數(shù)據(jù)中的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 } View CodeContentProvider:內(nèi)容提供者抽象類
因為在Android系統(tǒng)里面,數(shù)據(jù)庫是私有的。一般情況下外部應(yīng)用程序是沒有權(quán)限讀取其它應(yīng)用程序的數(shù)據(jù)。如果想公開你自己的數(shù)據(jù),有兩個選擇:可以創(chuàng)建你自己的內(nèi)容提供器(一個ContentProvider子類)或者你可以給已有的提供器添加數(shù)據(jù)-如果存在一個控制同樣類型數(shù)據(jù)的內(nèi)容提供器且你擁有寫的權(quán)限。而外界根本看不到,也不用看到這個應(yīng)用暴露的數(shù)據(jù)在應(yīng)用當中是如何存儲的,或者是用數(shù)據(jù)庫存儲還是用文件存儲,還是通過網(wǎng)上獲得,這些一切都不重要,重要的是外界可以通過這一套標準及統(tǒng)一的接口和程序里的數(shù)據(jù)打交道,可以讀取程序的數(shù)據(jù),也可以刪除程序的數(shù)據(jù),當然,中間也會涉及一些權(quán)限的問題。
?
實現(xiàn)ContentProvider抽象類需要在配置文件中聲明:
//并賦讀寫權(quán)限
<provider android:name=".provider.PersonContentProvider"
android:authorities="包名+類名" android:readPermission="隨便.read"
android:writePermission="隨便2.write" >
</provider>
聲明權(quán)限還需要在manifest節(jié)點下添加:
<manifest>
<permission android:name="隨便.read"></permission>
<permission android:name="隨便2.write"></permission>
</manifest>
并在對應(yīng)訪問的工程的Manifest.xml中注冊(不然無法訪問被拒絕):
<uses permission android:name="隨便.read" />
<uses permission android:name="隨便2.write" />
?
轉(zhuǎn)載于:https://www.cnblogs.com/cuijl/p/4584402.html
總結(jié)
以上是生活随笔為你收集整理的基础学习总结(五)---baseAdapter、ContentProvider的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 184使用 Core Image 框架处
- 下一篇: 关于nginx配置的不完全总结