移动互联网开发之类微信界面设计contentprovider运用

移动互联网开发之类微信界面设计contentprovider运用

项目要求

在这里插入图片描述

项目源码地址

码云仓库地址:https://gitee.com/si–yue/WeiXinApplication

项目过程

  1. 目录结构
    在这里插入图片描述

在这里插入图片描述

  1. 界面总体设计见前面的博客https://blog.csdn.net/qq_44744670/article/details/105181254
    ,此次需要完善通讯录界面,则在通讯录的.xml文件中加入控件进行操作。

  2. 在top.xml中加一个ImageButton,同时LinearLayout的orientation属性改为horizontal。并且新增一个add_contact.xml布局文件,再点击ImageButton之后以一个对话框的形式显示出来。

  3. 编写事件监听控制文件contactFragment.java,数据的获取要从库中调通讯录中的联系人和联系电话。大致代码:

private void initexpandData(){
        Uri uri= ContactsContract.Contacts.CONTENT_URI;
        ContentResolver resolver = context.getContentResolver();
        Cursor cursor=resolver.query(uri, null, null, null, null);  //得到记录集
        if(cursor!=null){
            while(cursor.moveToNext()){
                //先获取联系人_id字段的索引号后再获取_id值
                int idFieldIndex=cursor.getColumnIndex("_id");
                int id=cursor.getInt(idFieldIndex);

                //先获取联系人姓名字段的索引号后再获取姓名字段值
                int nameFieldIndex  = cursor.getColumnIndex("display_name");
                String name=cursor.getString(nameFieldIndex);

                int numCountFieldIndex=cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
                int numCount=cursor.getInt(numCountFieldIndex);   //获取联系人的电话号码个数
                String phoneNumber="";
                if(numCount>0){       //联系人有至少一个电话号码
                    //在类ContactsContract.CommonDataKinds.Phone中根据id查询相应联系人的所有电话;
                    Cursor phonecursor=getActivity().getContentResolver().query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?",
                            new String[]{Integer.toString(id)}, null);
                    if(phonecursor!=null){
                        if(phonecursor.moveToFirst()){     //仅读取第一个电话号码
                            int numFieldIndex=phonecursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                            phoneNumber=phonecursor.getString(numFieldIndex);
                        }
                        phonecursor.close();
                    }
                }
                item=new HashMap<String,String>();  //必须循环创建
                item.put("name", name);
                item.put("phoneNumber", phoneNumber);
                data.add(item);
            }
            cursor.close();
        }
    }

  1. 在MainActivity.java中完善逻辑控制,核心代码如下:
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        userAccounts=new ArrayList<>();
        myAdapter=new MyAdapter(this,userAccounts);
        recyclerView=findViewById(R.id.recycleview);
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(myAdapter);

        initView();
        initFragment();
        selectfragment(0);
        intEvent();

        initList();
        initData();

        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                View view1= LayoutInflater.from(MainActivity.this).inflate(R.layout.dialogview,null,false);
                final EditText edusername=view1.findViewById(R.id.ed_username);
                final EditText edpassword=view1.findViewById(R.id.ed_password);

                new AlertDialog.Builder(MainActivity.this)
                        .setTitle("用户信息输入")
                        .setView(view1)
                        .setPositiveButton("添加", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                UserAccount userAccount=new UserAccount();
                                userAccount.setUsername(edusername.getText().toString().trim());
                                userAccount.setPassword(edpassword.getText().toString().trim());
                                userAccounts.add(userAccount);
                                myAdapter.notifyDataSetChanged();
                            }
                        }).setNegativeButton("取消",null).show();
            }
        });
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值