gpt4 book ai didi

java - 绑定(bind) View 时无法放置分隔符

转载 作者:行者123 更新时间:2023-12-02 06:13:28 25 4
gpt4 key购买 nike

我正在构建一个具有联系人页面的调用者应用程序我使用光标获取的联系人并在 onBindViewHolder 中使用该光标我想在不同的字母联系人之间放置分隔符问题是我找不到在 onBindViewHolder 上添加“run”的方法,以便我膨胀separatorHolder,然后光标返回到原来的位置。

我尝试使用两种不同的 View 类型,但由于我使用光标从设备中获取联系人,因此无法将分隔符添加到光标。

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
switch (viewType) {
case VIEW_TYPE_ITEM:
v = LayoutInflater.from(mContext).inflate(R.layout.item_contact, parent, false);
return new ContactHolder(v);
case VIEW_TYPE_SEPERATOR:
v = LayoutInflater.from(mContext).inflate(R.layout.item_separator, parent, false);
return new SeparatorHolder(v);
default:
v = LayoutInflater.from(mContext).inflate(R.layout.item_contact, parent, false);
return new ContactHolder(v);
}
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, Cursor cursor) {
switch (viewHolder.getItemViewType()) {
case VIEW_TYPE_ITEM:
ContactHolder contactHolder = (ContactHolder) viewHolder;
Contact contact = new Contact(cursor);
String contactName = contact.getName();
String contactNumber = contact.getMainPhoneNumber();
String formattedNumber =
Utilities.formatPhoneNumber(contactNumber);

contactHolder.name.setText(contactName);
contactHolder.number.setText(formattedNumber);

if (contact.getPhotoUri() == null) {
contactHolder.photo.setVisibility(View.GONE);

contactHolder.photoPlaceholder.setVisibility(View.VISIBLE);
} else {
contactHolder.photo.setVisibility(View.VISIBLE);
contactHolder.photoPlaceholder.setVisibility(View.GONE);

contactHolder.photo.setImageURI(Uri.parse(contact.getPhotoUri()));
}

if (mOnContactSelectedListener != null) {
contactHolder.itemView.setOnClickListener(v ->
mOnContactSelectedListener.onContactSelected(contactNumber));
}
break;
case VIEW_TYPE_SEPERATOR:
SeparatorHolder separatorHolder = (SeparatorHolder)
viewHolder;

separatorHolder.text.setText(separator);
break;
}
}

最佳答案

有两件事 - getItemCount 和 getItemViewType。

getItemCount - 它应该返回项目总数(联系人数量 + 分隔符数量)。编写一些逻辑来找到它。(计算不同起始字母的总数,减去 1 ,得到分隔符计数)

getItemViewType - 在这里,您应该验证这是否应该是联系人或分隔符,并发送这些类型。(获取前一个并检查第一个字母)

但是,在逻辑上需要谨慎。

关于java - 绑定(bind) View 时无法放置分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com