ContentProvider/ContentResolver
第一个项目
mainActivity
package com.example.day10_provider_homework;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.example.day10_provider_homework.Task.HttpUtils;
import com.example.day10_provider_homework.Task.JavaBean;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ContentResolver contentResolver;
private String path = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";
static List<JavaBean.DataBean> totalList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new myTask().execute(path);
}
public void getJson(View view) {
contentResolver = getContentResolver();
Toast.makeText(this, totalList.size()+"", Toast.LENGTH_SHORT).show();
for (int i = 0; i < totalList.size(); i++) {
ContentValues contentValues = new ContentValues();
contentValues.put("picid",totalList.get(i).getNum());
contentValues.put("picurl",totalList.get(i).getPic());
contentValues.put("title",totalList.get(i).getTitle());
contentResolver.insert(Uri.parse("content://com.pan.sql"),contentValues);
}
}
public void select(View view) {
Cursor cursor = contentResolver.query(Uri.parse("content://com.pan.sql"), null, null, null, null, null);
if(cursor != null){
while(cursor.moveToNext()){
String picurl = cursor.getString(cursor.getColumnIndex("picurl"));
int picid = cursor.getInt(cursor.getColumnIndex("picid"));
Toast.makeText(this, picid+"-"+picurl, Toast.LENGTH_SHORT).show();
}
}
}
static class myTask extends AsyncTask<String ,Void, List<JavaBean.DataBean>>{
@Override
protected List<JavaBean.DataBean> doInBackground(String... strings) {
String json = HttpUtils.LoadJson(strings[0]);
if (json != null) {
JavaBean javaBean = new Gson().fromJson(json, JavaBean.class);
return javaBean.getData();
}
return null;
}
@Override
protected void onPostExecute(List<JavaBean.DataBean> dataBeans) {
if(dataBeans != null && dataBeans.size() > 0){
totalList.addAll(dataBeans);
}
}
}
}
SqlHelper 工具类
package com.example.day10_provider_homework.sql;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.annotation.Nullable;
import com.example.day10_provider_homework.Task.JavaBean;
import com.example.day10_provider_homework.Task.MyAsyncTask;
import java.util.ArrayList;
import java.util.List;
public class MySqlHelper extends SQLiteOpenHelper {
private List<JavaBean.DataBean> totalList = new ArrayList<>();
public MySqlHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table user(picid integer primary key,picurl varchar(20),title varchar(20))";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
ContentProvider 提供者
package com.example.day10_provider_homework.Provider;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import com.example.day10_provider_homework.Task.JavaBean;
import com.example.day10_provider_homework.Task.MyAsyncTask;
import com.example.day10_provider_homework.sql.MySqlHelper;
import java.util.ArrayList;
import java.util.List;
public class MyContentProvider extends ContentProvider {
private SQLiteDatabase db;
public MyContentProvider() {
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return db.delete("user",selection,selectionArgs);
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
db.insert("user",null,values);
return uri;
}
@Override
public boolean onCreate() {
MySqlHelper test = new MySqlHelper(getContext(), "test.db", null, 1);
db = test.getReadableDatabase();
if(db != null){
return true;
}
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return db.query("user",projection,selection,selectionArgs,null,null,sortOrder);
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return db.update("user",values,selection,selectionArgs);
}
}
第二个项目/解析者
mainActivity
package com.example.app2;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ContentResolver contentResolver;
private Uri uri;
private List<JavaBean> list = new ArrayList<>();
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contentResolver = getContentResolver();
uri = Uri.parse("content://com.pan.sql");
listView = findViewById(R.id.list_view);
}
public void click(View view) {
Cursor c = contentResolver.query(uri, null, null, null, null);
if(c != null){
while(c.moveToNext()){
String picurl = c.getString(c.getColumnIndex("picurl"));
int picid = c.getInt(c.getColumnIndex("picid"));
String title = c.getString(c.getColumnIndex("title"));
JavaBean javaBean = new JavaBean();
javaBean.setNum(picid);
javaBean.setTitle(title);
javaBean.setPic(picurl);
list.add(javaBean);
}
c.close();
Toast.makeText(this, ""+list.toString(), Toast.LENGTH_SHORT).show();
}
MyAdapter adapter = new MyAdapter(list,this);
listView.setAdapter(adapter);
}
}
适配器Adapter
package com.example.app2;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private List<JavaBean> totalList;
private Context context;
private LayoutInflater layoutInflater;
public MyAdapter(List<JavaBean> totalList, Context context) {
this.totalList = totalList;
this.context = context;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return totalList.size();
}
@Override
public Object getItem(int position) {
return totalList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
holder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.layout_list_item,null);
holder.textView_title = convertView.findViewById(R.id.text_title);
holder.textView_num = convertView.findViewById(R.id.text_num);
holder.imageView_pic = convertView.findViewById(R.id.image_pic);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.textView_num.setText(String.valueOf(totalList.get(position).getNum()));
holder.textView_title.setText(totalList.get(position).getTitle());
Glide.with(context).load(totalList.get(position).getPic()).into(holder.imageView_pic);
return convertView;
}
static class ViewHolder{
TextView textView_title;
TextView textView_num;
ImageView imageView_pic;
}
}