数据库

周末练习:整合数据库与APP开发

第一个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;

    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值