启动界面java代码
package com.example.ep2;
import android.Manifest;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Uri uri;
private ContentResolver cr;
private List<MyCLass> list;
private ListView lv;
private MyAdapter aaa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uri=Uri.parse("content://com.shi.1234567");
cr=getContentResolver();
lv=findViewById(R.id.ep2_listView);
getData();
}
private void getData() {
String[] stars = {"PicId", "name","address"};
Cursor query = cr.query(uri, stars, null, null, null);
Toast.makeText(this, ""+query, Toast.LENGTH_SHORT).show();
list=new ArrayList<>();
if( query!=null) {
while (query.moveToNext()) {
String picId = query.getString(query.getColumnIndex("PicId"));
String name = query.getString(query.getColumnIndex("name"));
String address = query.getString(query.getColumnIndex("address"));
MyCLass myCLass = new MyCLass();
myCLass.setName(name);
myCLass.setPicId(picId);
myCLass.setAddress(address);
Log.i("123321", "getData: mc.toString" + myCLass.toString());
list.add(myCLass);
}
aaa = new MyAdapter(list, MainActivity.this);
lv.setAdapter(aaa);
}else{
Toast.makeText(this, "数据为空。", Toast.LENGTH_SHORT).show();
}
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher_round);
builder.setMessage("是否删除?").setTitle("提示").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
list.remove(position);
aaa.notifyDataSetChanged();
int delete = cr.delete(uri, "PicId=?", new String[]{list.get(position).getPicId()});
Toast.makeText(MainActivity.this, "delete:"+delete, Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create();
builder.show();
return false;
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==102&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
getData();
}
}
}
对应的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ep2_listView"
>
</ListView>
</LinearLayout>
自定义适配器类
package com.example.ep2;
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<MyCLass> list;
private Context con;
public MyAdapter(List<MyCLass> list, Context con) {
this.list = list;
this.con = con;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private MyId mi;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if( convertView==null){
convertView= LayoutInflater.from(con).inflate(R.layout.mylayout,null);
mi=new MyId();
mi.id=convertView.findViewById(R.id.ep2_text_id);
mi.name=convertView.findViewById(R.id.ep2_text_name);
mi.iv=convertView.findViewById(R.id.ep2_image);
convertView.setTag(mi);
}else{
mi= (MyId) convertView.getTag();
}
mi.name.setText(list.get(position).getName());
mi.id.setText(list.get(position).getPicId());
Glide.with(con).load(list.get(position).getAddress()).into(mi.iv);
return convertView;
}
class MyId{
private TextView id;
private TextView name;
private ImageView iv;
}
}
自定义类
package com.example.ep2;
public class MyCLass {
private String PicId;
private String name;
private String address;
public String getPicId() {
return PicId;
}
public void setPicId(String picId) {
PicId = picId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "MyCLass{" +
"PicId='" + PicId + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
清单列表
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ep2">
<uses-permission android:name="com.ep1.read"/>
<uses-permission android:name="com.ep1.write"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
自定义布局的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ep2_text_id"
android:textSize="20sp"
android:textColor="#673AB7"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#CDDC39"
android:id="@+id/ep2_text_name"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ep2_image"
/>
</LinearLayout>
内容提供者
package com.example.ep1;
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.AsyncTask;
import android.util.Log;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public class MyContentProvider extends ContentProvider {
private Context con;
private Uri uri;
private SQLiteDatabase db;
public MyContentProvider() {
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return db.delete("ep",selection,selectionArgs);
}
@Override
public String getType(Uri uri) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public Uri insert(Uri uri, ContentValues values) {
db.insert("ep", null, values);
return uri;
}
@Override
public boolean onCreate() {
MyHelper mh = new MyHelper(getContext(), "evening.db", null, 1);
db=mh.getReadableDatabase();
new MyAsyncTask().execute("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1");
return true;
}
class MyAsyncTask extends AsyncTask<String, Void, List<MyBean.DataBean>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(List<MyBean.DataBean> list) {
super.onPostExecute(list);
Uri uri=Uri.parse("com.shi.1234567");
for (int i = 0; i < list.size(); i++) {
ContentValues cv = new ContentValues();
cv.put("PicId",list.get(i).getId());
cv.put("name",list.get(i).getTitle());
cv.put("address",list.get(i).getPic());
insert(uri,cv);
}
Log.i("123321", "onPostExecute: 插入完毕。");
}
@Override
protected List<MyBean.DataBean> doInBackground(String... strings) {
try {
URL url=new URL( strings[0]);
HttpURLConnection uc = (HttpURLConnection) url.openConnection();
uc.connect();
if( uc.getResponseCode()==200){
InputStream is = uc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String str=null;
while( (str=br.readLine())!=null){
sb.append(str);
}
Log.i("123321", "doInBackground: sb.toString"+sb.toString());
Gson gson = new Gson();
MyBean myBean = gson.fromJson(sb.toString(), MyBean.class);
List<MyBean.DataBean> data = myBean.getData();
return data;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return db.query("ep", projection, selection, selectionArgs, null,null, sortOrder);
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return db.update("db",values,selection,selectionArgs);
}
}
自定义Helper类
package com.example.ep1;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table ep(PicId integer,name varchar(20),address varchar(100))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}