基础学习总结(五)---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 } 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 //定義數據適配器 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 } View CodeContentProvider:內容提供者抽象類
因為在Android系統里面,數據庫是私有的。一般情況下外部應用程序是沒有權限讀取其它應用程序的數據。如果想公開你自己的數據,有兩個選擇:可以創建你自己的內容提供器(一個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" />
?
轉載于:https://www.cnblogs.com/cuijl/p/4584402.html
總結
以上是生活随笔為你收集整理的基础学习总结(五)---baseAdapter、ContentProvider的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 184使用 Core Image 框架处
- 下一篇: 关于nginx配置的不完全总结