安卓数据共享(Contentprovider)

1.因为用到contentpriver四大主键之一    所以要在项目01中注册

 
<provider
            android:authorities="com.example.myapplication"  //这个应用的地址
            android:name=".contentpriver"
            android:enabled="true"  
            android:exported="true"  //是否让别的应用程序访问 ></provider>


1.创建项目01

2.创建数据库类继承SQLiteOpenHelper

 
public class mysql extends SQLiteOpenHelper {
    public mysql(Context context) {
        super(context,"Student",null,1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create  table  student(_id integer primary key autoincrement,name varchar(10),age varchar(10))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}



3.创建操作数据库的类ContentProvider

public class contentpriver extends ContentProvider {
    //content://是固定的   com.example.hasee.myapplication1是你的项目01的包名  student这是你的数据库表的名字
    private String path="content://alice.bw.com.contentprovider_provider/student";
    private SQLiteDatabase read;
    @Override
    public boolean onCreate() {
        mysql my = new mysql(getContext());
        //数据库的工具类
        read = my.getReadableDatabase();
        return false;
    }

    @Nullable
    @Override
    public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
        Cursor student = read.query("student", strings, s, strings1, null, null, s1);
        return student;
    }

    @Nullable
    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(Uri uri, ContentValues contentValues) {
        long student = read.insert("student", null, contentValues);
        Uri uri1 = ContentUris.withAppendedId(uri, student);
        return uri1;
    }

    @Override
    public int delete(Uri uri, String s, String[] strings) {
        int student = read.delete("student", s, strings);
        return student;
    }

    @Override
    public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
        int student = read.update("student", contentValues, s, strings);
        return student;
    }
}






4.主函数不用写

5.创建项目02

6.创建listview的适配器继承BaseAdapter  你也可以用recyclerview

public class spq extends BaseAdapter {
    private ArrayList<student> arr;
    private Context con;

    public spq(ArrayList<student> arr, Context con) {
        this.arr = arr;
        this.con = con;
    }

    @Override
    public int getCount() {
        return arr.size();
    }

    @Override
    public Object getItem(int i) {
        return arr.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        youhua you = null;
        if(view==null){
            view= View.inflate(con, R.layout.buju, null);
            you=new youhua();
            you.tv1=view.findViewById(R.id.tv1);
            you.tv2=view.findViewById(R.id.tv2);
            view.setTag(you);
        }else {
            you= (youhua) view.getTag();
        }
        you.tv1.setText(arr.get(i).getName());
        you.tv2.setText(arr.get(i).getAge());
        return view;
    }
    class youhua{
        TextView tv1;
        TextView tv2;
    }
}




7.创建实体类

public class student {
    private String name;
    private String age;

    public student(String name, String age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "student{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}


8.在主函数里面写逻辑

public class MainActivity extends AppCompatActivity {
    private ArrayList<student> arr;
    private ListView lv;
    private ContentResolver con;
    //content://是固定的   com.example.hasee.myapplication1是你的项目01的包名  student这是你的数据库表的名字 
    private String url="content://com.example.hasee.myapplication1/student";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);
        //这和contentpriver是成对出现的
        con= getContentResolver();
        arr=new ArrayList<>();
    }

    public void cc(View view) {
          switch (view.getId()){
              case R.id.but1:
                  insertStudent();
                  break;
              case R.id.but2:
                  arr.clear();
                  queryStudent();
                  break;
              case R.id.but3:
                  break;
          }
    }
    private void insertStudent() {
        View dialogView = View.inflate(this, R.layout.dialog_layout, null);
        final EditText name_et = dialogView.findViewById(R.id.et1);
        final EditText age_et = dialogView.findViewById(R.id.et2);

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setIcon(R.mipmap.ic_launcher).setTitle("警告").setMessage("插入一个学生").setView(dialogView)
                .setPositiveButton("确认",new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String name = name_et.getText().toString();
                        String age = age_et.getText().toString();
                        ContentValues values = new ContentValues();
                        values.put("name", name);
                        values.put("age", age);
                        con.insert(Uri.parse(url), values);
                    }
                });
        builder.show();

    }
    public void queryStudent(){
        Cursor query = con.query(Uri.parse(url), null, null, null, null);
        if(query!=null){
            while (query.moveToNext()){
                String name = query.getString(query.getColumnIndex("name"));
                String age = query.getString(query.getColumnIndex("age"));
                student stu = new student(name, age);
                arr.add(stu);
            }
        }
        lv.setAdapter(new spq(arr,this));

    }


}



主布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
    android:layout_width="match_parent" android:layout_height="match_parent"
    tools:context="com.example.myapplication.MainActivity"
    android:orientation="vertical">

    <Button
        android:id="@+id/but1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入"
        android:onClick="cc"/>
    <Button
        android:id="@+id/but2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询"
        android:onClick="cc"/>
    <Button
        android:id="@+id/but3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除"
        android:onClick="cc"/>
    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>
</LinearLayout>



item布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
   <TextView
       android:id="@+id/tv1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>



对话框布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>


 
 

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值