完善WECHAT项目中的“通讯录”模块、新增联系人按钮

项目要求

  • 完善WECHAT项目中的“通讯录”模块
  • 使用RecyclerView显示联系人
  • 顶部Tab右上方新增联系人按钮

基本功能

  • 添加联系人:单击“添加”按钮,弹出“用户信息输入”的对话框,输入信息后,即可添加联系人
  • 联系人展示

完整代码

Wechat V3.0

内容参考

第8章实验 内容提供者组件与Android后台线程

效果演示

在这里插入图片描述

主要代码

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();
            }
        });
    }

MyAdapter

public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
    private List<UserAccount>userAccounts;
    private Context mContext;

    public MyAdapter(Context context,List<UserAccount>userAccounts){
        mContext=context;
        this.userAccounts=userAccounts;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view= LayoutInflater.from(mContext).inflate(R.layout.itemview,null);
        MyHolder myHolder=new MyHolder(view);
        return myHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {
        ((TextView)myHolder.finViewById(R.id.tv_username)).setText(userAccounts.get(i).getUsername());
        ((TextView)myHolder.finViewById(R.id.tv_password)).setText(userAccounts.get(i).getPassword());
    }

    @Override
    public int getItemCount() {
        return userAccounts.size();
    }
}

MyHolder.java

public class MyHolder extends RecyclerView.ViewHolder {
    private View mView;
    public MyHolder(@NonNull View itemView) {
        super(itemView);
        mView=itemView;
    }
    public View finViewById(int id){
        return mView.findViewById(id);
    }
}

UserAccount

public class UserAccount {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

总结

该项目相较之前更综合,将Recyclerview、Adapter等知识综合应用,整体的业务逻辑相对比较清晰,最主要的是明白了ContentProvider的用法

ContentProvider实现了不同APP之间数据共享,为其他应用程序提供了访问本应用程序的接口,其他应用程序可以通过ContentResolver来操作ContentProvider提供的数据,同时ContentProvider保证了被访数据的安全性,用户只需要关心操作数据的uri就可以了。
sql也有增删改查的方法,单sql只能操作本应用下的数据库。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值