Ban*_*ana 3 java android android-adapter android-view android-drawable
我在使用TextDrawable时遇到了一个问题- 我希望为同一个用户显示相同的颜色 - int color2 = generator.getColor("user@gmail.com");在我的情况下使用userId作为键,但我得到的是所有人userId的相同颜色.我在ListView和现在的RecyclerView中尝试了这个,但总是相同的结果 - 我的所有联系人共享相同的颜色.
这是我的ContactsAdapter的代码:
@Override
public void onBindViewHolder(ContactsAdapter.ContactsViewHolder holder, int position) {
Contact contact = contactList.get(position);
holder.userName.setText(contact.getUserName());
TextDrawable.IBuilder builder = TextDrawable.builder()
.beginConfig()
.withBorder(0)
.toUpperCase()
.endConfig()
.round();
ColorGenerator generator = ColorGenerator.MATERIAL;
// generate random color
int color1 = generator.getRandomColor();
// generate color based on a key (same key returns the same color), useful for list/grid views
int color2 = generator.getColor(holder.getItemId());
//int color2 = generator.getColor("user@gmail.com");
TextDrawable textDrawable = builder.build(contactList.get(position).getUserName().substring(0,1), color2);
holder.thumbNail.setImageDrawable(textDrawable);
}
Run Code Online (Sandbox Code Playgroud)
如果我使用 int color2 = generator.getColor(holder.userName);我得到相同名称的不同颜色,如果我使用 int color2 = generator.getColor(holder.getItemId());我为每个userId获得相同的颜色.
如果我正确理解了这个问题,当您取消注释int color2 = generator.getColor("user@gmail.com");行时,您希望同一个用户具有相同的颜色,但其他用户具有其他颜色.
generator.getColor("some_example_string")将不断为列表中的每个用户返回相同的颜色.我看到你从github上复制了粘贴,你希望它适合你.请注意作者的上一行:
//根据键生成颜色
您必须提供密钥,并根据该密钥生成颜色.假设您的用户名可能被视为密钥,您可以执行以下操作:
generator.getColor(user.getName()); // e.g. "John Doe"
Run Code Online (Sandbox Code Playgroud)
现在每次都会John Doe为其他用户生成相同的颜色和不同的颜色.
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |