欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 自定義ContentProvider簡單實例

 更新時間:2017年06月21日 08:44:52   投稿:lqh  
這篇文章主要介紹了Android 自定義ContentProvider簡單實例的相關資料,需要的朋友可以參考下

Android 自定義ContentProvider簡單實例

Android允許我們定義自己的的ContentProvider對象來共享數據,練練手,簡單來實現一下。

要使用ContentProvider來操作數據,必須要有保存數據的場所??梢允褂梦募騍QLite數據庫的方式來保存數據,通常使用SQLite數據庫。

1,創(chuàng)建一個數據庫幫助類,歸根結底都是它在操作數據庫。代碼如下:

package com.njue; 
 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
 
public class DBManager extends SQLiteOpenHelper { 
public static final String myProvider_table_name="myProvider_table_name"; 
String sql="create table myProvider_table_name(id integer,name text)"; 
  public DBManager(Context context) { 
    super(context, "myPrivoder.db", null, 1); 
    // TODO Auto-generated constructor stub 
  } 
 
  @Override 
  public void onCreate(SQLiteDatabase arg0) { 
    // TODO Auto-generated method stub 
   arg0.execSQL(sql); 
  } 
 
  @Override 
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
 
  } 
 
} 

2,創(chuàng)建一個myProvider類,該類繼承ContentProvider,實現其抽象方法來操作數據庫,該類引用DBManager類來獲得數據庫實例。

package com.njue; 
 
import android.content.ContentProvider; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.net.Uri; 
 
public class myProvider extends ContentProvider { 
  DBManager dbHelper; 
  @Override 
  public int delete(Uri arg0, String arg1, String[] arg2) { 
    // TODO Auto-generated method stub 
    SQLiteDatabase db=dbHelper.getWritableDatabase(); 
    int id=db.delete(DBManager.myProvider_table_name, arg1, arg2); 
    if(id!=0)return id; 
    return 0; 
  } 
 
  @Override 
  public String getType(Uri uri) { 
    // TODO Auto-generated method stub 
    return null; 
  } 
 
  @Override 
  public Uri insert(Uri uri, ContentValues values) { 
    // TODO Auto-generated method stub 
    SQLiteDatabase db=dbHelper.getWritableDatabase(); 
    db.insert(DBManager.myProvider_table_name, "id", values); 
    return null; 
  } 
 
  @Override 
  public boolean onCreate() { 
    // TODO Auto-generated method stub 
    dbHelper=new DBManager(getContext()); 
    return true; 
  } 
 
  @Override 
  public Cursor query(Uri uri, String[] projection, String selection, 
      String[] selectionArgs, String sortOrder) { 
    // TODO Auto-generated method stub 
    SQLiteDatabase db=dbHelper.getWritableDatabase(); 
    Cursor c=db.query(DBManager.myProvider_table_name,projection, selection, selectionArgs, null, null, sortOrder); 
    return c; 
  } 
 
  @Override 
  public int update(Uri uri, ContentValues values, String selection, 
      String[] selectionArgs) { 
    // TODO Auto-generated method stub 
    SQLiteDatabase db=dbHelper.getWritableDatabase(); 
    int id=db.update(DBManager.myProvider_table_name, values, selection, selectionArgs); 
    if(id!=0)return id; 
    return 0; 
  } 
 
} 

3,ContextProvider必須聲明才能使用,因此,需要在AndroidManifest.xml配置文件中聲明。聲明很簡單,需要類名稱和授權名稱兩個屬性。

<provider android:name="myProvider" 
    android:authorities="com.njue.myProvider" /> 

 到這里,我們自定義的ContentProvider就完成了。我們可以在Eclipse中的File Explorer 窗口中看到自定義的ContentProvider

 4,簡單測試

package com.njue; 
 
import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
 
public class Content_providerActivity extends Activity { 
  /** Called when the activity is first created. */ 
   Uri uri; 
   String AUTHORITY="content://com.njue.myProvider/myProvider_table_name"; 
   ContentResolver cr; 
   EditText input; 
   Button insert; 
   TextView show; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    input=(EditText)findViewById(R.id.input); 
    insert=(Button)findViewById(R.id.insert); 
    show=(TextView)findViewById(R.id.show); 
    uri=uri.parse(AUTHORITY); 
    cr=this.getContentResolver(); 
    insert.setOnClickListener(new Button.OnClickListener(){ 
 
      @Override 
      public void onClick(View v) { 
        // TODO Auto-generated method stub 
         ContentValues values=new ContentValues(); 
          values.put("name", input.getText().toString()); 
          cr.insert(uri, values); 
          Cursor c=cr.query(uri, null, null, null, null); 
          show.setText(""); 
          c.moveToFirst(); 
          while(c.moveToNext()){ 
           show.append(c.getString(1)+"\r\n"); 
          } 
          input.setText(""); 
      }}); 
     
  } 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • Android中Fragment的基本用法示例總結

    Android中Fragment的基本用法示例總結

    Fragment是activity的界面中的一部分或一種行為,下面這篇文章主要給大家介紹了關于Android中Fragment的基本用法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • android使用RxJava實現預加載

    android使用RxJava實現預加載

    這篇文章主要為大家詳細介紹了android使用RxJava實現預加載的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android仿微信activity滑動關閉效果

    Android仿微信activity滑動關閉效果

    這篇文章主要為大家詳細介紹了Android仿微信activity滑動關閉的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 詳解Android App中創(chuàng)建ViewPager組件的方法

    詳解Android App中創(chuàng)建ViewPager組件的方法

    這篇文章主要介紹了詳解Android App中創(chuàng)建ViewPager組件的方法,ViewPager最基本的功能就是可以使視圖滑動,需要的朋友可以參考下
    2016-03-03
  • 在Kotlin開發(fā)中如何使用集合詳解

    在Kotlin開發(fā)中如何使用集合詳解

    這篇文章主要給大家介紹了關于在Kotlin開發(fā)中如何使用集合的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03
  • Android ExpandableListView實現下拉刷新和加載更多效果

    Android ExpandableListView實現下拉刷新和加載更多效果

    這篇文章主要為大家詳細介紹了Android ExpandableListView實現下拉刷新和加載更多效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android?8.0實現藍牙遙控器自動配對

    Android?8.0實現藍牙遙控器自動配對

    這篇文章主要為大家詳細介紹了Android?8.0實現藍牙遙控器自動配對,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • android實現短按電源鍵關機的實現代碼

    android實現短按電源鍵關機的實現代碼

    這篇文章主要介紹了android實現短按電源鍵關機的實現代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Android使用 Coroutine + Retrofit打造簡單的HTTP請求庫

    Android使用 Coroutine + Retrofit打造簡單的HTTP請求庫

    這篇文章主要介紹了Android使用 Coroutine + Retrofit打造簡單的HTTP請求庫,幫助大家更好的理解和學習使用Android,感興趣的朋友可以了解下
    2021-03-03
  • 詳解Android應用中屏幕尺寸的獲取及dp和px值的轉換

    詳解Android應用中屏幕尺寸的獲取及dp和px值的轉換

    這篇文章主要介紹了Android應用中屏幕尺寸的獲取及dp和px值的轉換方法,這里主要介紹將dp轉化為px值的例子,需要的朋友可以參考下
    2016-03-03

最新評論