以编程方式添加、删除和设置 CardView 参数

Add, remove and set CardView parameters programmatically

我正在开发一个应用程序,使用 RecyclerViewCardView 小部件来显示用户添加的联系人。

我已经创建了 UI,但我不知道如何使用 RecyclerView 进行上述操作。如何解决?

为了将联系人绑定到 CardView,您需要创建一个 ArrayList<> 来存储联系人以便绑定它们。首先,创建一个名为 Contact.java 的新 class 并添加以下代码:

public class Contact {
    public String name;
    public int number;

    public Contact(String name, int number) {
        this.name = name;
        this.number = number;
    }
}

此 class 将确保我们 ArrayList<> 中的每个实例都具有联系人姓名和 phone 号码所需的值。现在,我们需要创建一个适配器 class 来管理 CardView 中的点击事件,并将 ArrayList<> 中的值绑定到 CardView 中的 View =].创建一个名为 ContactsAdapter.java 的新 class 并添加以下代码:

public class ContactsAdapter extends RecyclerView.Adapter<ContactsAdapter.ContactsViewHolder> {
    public List<Contact> list;

    public ContactsAdapter(List<ContactsAdapter> list) {
        this.list = list;
    }

    public static class ContactsViewHolder extends RecyclerView.ViewHolder {
        // Update:
        RelativeLayout item;

        ImageView photo;
        TextView name;
        TextView number;

        public ContactsViewHolder(View view) {
            super(view);

            // Update:
            item = (RelativeLayout) view.findViewById(R.id.id_to_rel_layout); // If not, then add one by using android.id="@+id/whatever"

            photo = (ImageView) view.findViewById(R.id.contact_photo);
            name = (TextView) view.findViewById(R.id.contact_name);
            number = (TextView) view.findViewById(R.id.contact_number);
        }
    }

    @Override
    public ContactsViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.contacts_layout, viewGroup, false);
        ContactsViewHolder viewHolder = new ContactsViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ContactsViewHolder viewHolder, final int position) {
        // Update:

        item.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Do onclick stuff here such as dialing someone
            }
        });

        viewHolder.photo.setImageURI(your_uri);
        viewHolder.name.setText(list.get(position).name);
        viewHolder.number.setText(list.get(position).number);   
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

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

现在我们必须将适配器连接到我们的 RecyclerView。在包含适当 RecyclerView 的 activity 中,添加以下代码:

private List<Contact> list = new ArrayList<>;

public void loadContacts() {
    list.add(new Contacts(photoUri, name, number));

    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.your_recyclerview);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    ContactsAdapter adapter = new ContactsAdapter(list);
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setAdapter(adapter);
}

您已成功将联系人与CardView绑定。告诉我你过得怎么样。