第一个app
加入数据库+二次判定
MainActivity
package com.example.day14_weekreview;
import android.Manifest;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private Button buttonInsertTel;
private ContentResolver contentResolver;
private List<Map<String,Object>> telList = new ArrayList<>();
private List<Map<String,Object>> sqlList = new ArrayList<>();
private int index = 0;
private boolean flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonInsertTel = (Button) findViewById(R.id.button_insertTel);
contentResolver = getContentResolver();
buttonInsertTel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS,Manifest.permission.WRITE_CONTACTS},100);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode == 100 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
if(flag){
Toast.makeText(this, "已经添加过了哦", Toast.LENGTH_SHORT).show();
return;
}
queryMySql();
queryPerson();
}
}
private void queryPerson() {
//查询系统数据库
Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if(cursor != null){
while(cursor.moveToNext()){
//添加到本地集合
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Map<String,Object> map = new HashMap<>();
map.put("name",name);
map.put("number",number);
telList.add(map);
}
cursor.close();
}
//存入数据库
Calendar calendar = Calendar.getInstance();
for (int i = 0; i < telList.size(); i++) {
ContentValues values = new ContentValues();
values.put("name",telList.get(i).get("name").toString());
values.put("tel",telList.get(i).get("number").toString());
values.put("time",calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+calendar.get(Calendar.DAY_OF_MONTH));
contentResolver.insert(Uri.parse("content://week.sql"),values);
}
index = 1;
telList.clear();
sqlList.clear();
}
private void queryMySql() {
if(index > 0) {
Cursor cursor = contentResolver.query(Uri.parse("content://week.sql"), null, null, null, null);
if(cursor != null){
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("tel"));
Map<String,Object> map = new HashMap<>();
map.put("name",name);
map.put("tel",number);
sqlList.add(map);
}
}
Toast.makeText(this, ""+sqlList.toString(), Toast.LENGTH_SHORT).show();
if (sqlList.size() == telList.size()) {
for (int i = 0; i < telList.size(); i++) {
String name = telList.get(i).get("name").toString();
String tel = sqlList.get(i).get("name").toString();
if (name.equals(tel)) {
flag = true;
}
}
Toast.makeText(this, ""+flag, Toast.LENGTH_SHORT).show();
}
}
}
}
提供者以及数据库打开帮助者
package com.example.day14_weekreview.Provicer;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySqlHelper extends SQLiteOpenHelper {
public MySqlHelper( Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table test(id integer primary key autoincrement,name varchar(20),tel varchar(20),time date)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
package com.example.day14_weekreview.Provicer;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
public class MyContentProvider extends ContentProvider {
private SQLiteDatabase db;
public MyContentProvider() {
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return db.delete("test",selection,selectionArgs);
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
db.insert("test",null,values);
return uri;
}
@Override
public boolean onCreate() {
MySqlHelper mySqlHelper = new MySqlHelper(getContext(), "review.db", null, 1);
db = mySqlHelper.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("test",projection,selection,selectionArgs,null,null,sortOrder);
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return db.update("test",values,selection,selectionArgs);
}
}
第二个app
主MainActivity
package com.example.app2;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import com.example.app2.Fragment.MainFragment;
import com.example.app2.Fragment.SecondFragment;
public class MainActivity extends AppCompatActivity {
private LinearLayout layoutLine;
private RadioButton radioMain;
private RadioButton radioTel;
private ViewPager viewPager;
private FragmentManager manager;
private FragmentTransaction transaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragments();
initView();
}
//添加碎片
private void Fragments() {
manager = getSupportFragmentManager();
transaction = manager.beginTransaction();
transaction.add(R.id.layout_main_line,Share.mainFragment);
transaction.add(R.id.layout_main_line,Share.secondFragment);
transaction.commit();
}
private void initView() {
layoutLine = (LinearLayout) findViewById(R.id.layout_line);
radioMain = (RadioButton) findViewById(R.id.radio_main);
radioTel = (RadioButton) findViewById(R.id.radio_tel);
// viewPager = findViewById(R.id.view_pager);
radioMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
manager = getSupportFragmentManager();
transaction = manager.beginTransaction();
transaction.hide(Share.secondFragment);
transaction.show(Share.mainFragment);
transaction.commit();
}
});
radioTel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
manager = getSupportFragmentManager();
transaction = manager.beginTransaction();
transaction.show(Share.secondFragment);
transaction.hide(Share.mainFragment);
transaction.commit();
}
});
}
}
碎片
第一个碎片
package com.example.app2.Fragment;
import android.Manifest;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.example.app2.R;
import com.example.app2.Share;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* A simple {@link Fragment} subclass.
*/
public class MainFragment extends Fragment {
private Button buttonGetTel;
private List<Map<String,Object>> telList = new ArrayList<>();
// private MyListener myListener;
public MainFragment() {
// Required empty public constructor
}
// @Override
// public void onAttach(Context context) {
// super.onAttach(context);
// myListener = (MyListener) getActivity();
// }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflate = inflater.inflate(R.layout.fragment_main, container, false);
buttonGetTel = (Button) inflate.findViewById(R.id.button_getTel);
buttonClick1();
return inflate;
}
private void buttonClick1() {
buttonGetTel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.M){
requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS,Manifest.permission.READ_CONTACTS},120);
}else{
read();
}
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode == 120 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
read();
}
}
// //接口回调方法
// public interface MyListener{
// void sendMessage(List<Map<String,Object>> list);
// }
private void read() {
ContentResolver contentResolver = getContext().getContentResolver();
Cursor cursor = contentResolver.query(Uri.parse("content://week.sql"), null, null, null, null);
if(cursor != null){
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("tel"));
String time = cursor.getString(cursor.getColumnIndex("time"));
int id = cursor.getInt(cursor.getColumnIndex("id"));
Map<String,Object> map = new HashMap<>();
map.put("name",name);
map.put("tel",number);
map.put("time",time);
map.put("id",id);
telList.add(map);
}
Toast.makeText(getContext(), "获取成功!", Toast.LENGTH_SHORT).show();
cursor.close();
//为接口赋值
// myListener.sendMessage(telList);
EventBus.getDefault().post(telList);
//切换页面
FragmentManager supportFragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction tr = supportFragmentManager.beginTransaction();
tr.hide(Share.mainFragment);
tr.show(Share.secondFragment);
tr.commit();
}
}
}
第二个碎片
package com.example.app2.Fragment;
import android.content.ContentResolver;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.Toast;
import com.example.app2.Adapters.MyAdapter;
import com.example.app2.R;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.List;
import java.util.Map;
/**
* A simple {@link Fragment} subclass.
*/
public class SecondFragment extends Fragment{
private MyAdapter adapter;
private ListView listView;
public SecondFragment() {
// Required empty public constructor
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflate = inflater.inflate(R.layout.fragment_second, container, false);
listView = inflate.findViewById(R.id.list_view_tel);
return inflate;
}
@Subscribe
public void getMessage(List<Map<String,Object>> list ){
adapter = new MyAdapter(list,getActivity());
listView.setAdapter(adapter);
LongClick(list);
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
private void LongClick(final List<Map<String, Object>> list) {
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
final PopupWindow popupWindow = new PopupWindow();
View inflate = getLayoutInflater().inflate(R.layout.layout_pop, null);
Button button_no = inflate.findViewById(R.id.button_no);
Button button_yes = inflate.findViewById(R.id.button_yes);
popupWindow.setContentView(inflate);
popupWindow.setHeight(300);
popupWindow.setWidth(500);
popupWindow.showAtLocation(inflate, Gravity.CENTER,0,0);
button_yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.remove(position);
adapter.notifyDataSetChanged();
Toast.makeText(getContext(), "删除成功!", Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
String names = list.get(position).get("name").toString();
ContentResolver contentResolver = getActivity().getContentResolver();
contentResolver.delete(Uri.parse("content://week.sql"),"name = ?",new String[]{names});
adapter.notifyDataSetChanged();
}
});
button_no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
return true;
}
});
}
}
最后适配器
package com.example.app2.Adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.app2.R;
import java.util.List;
import java.util.Map;
public class MyAdapter extends BaseAdapter {
private List<Map<String,Object>> telList;
private Context context;
private LayoutInflater layoutInflater;
public MyAdapter(List<Map<String, Object>> telList, Context context) {
this.telList = telList;
this.context = context;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return telList.size();
}
@Override
public Object getItem(int position) {
return telList.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_tel,null);
holder.textView_id = convertView.findViewById(R.id.text_id);
holder.textView_name = convertView.findViewById(R.id.text_name);
holder.textView_tel = convertView.findViewById(R.id.text_tel);
holder.textView_time = convertView.findViewById(R.id.text_time);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.textView_time.setText(telList.get(position).get("time").toString());
holder.textView_tel.setText(telList.get(position).get("tel").toString());
holder.textView_name.setText(telList.get(position).get("name").toString());
holder.textView_id.setText(telList.get(position).get("id").toString());
return convertView;
}
class ViewHolder{
TextView textView_id;
TextView textView_name;
TextView textView_tel;
TextView textView_time;
}
}
周末练习:整合数据库与APP开发
3366

被折叠的 条评论
为什么被折叠?



