2

TextDrawableを使用する際に問題が発生しました - 同じユーザーに同じ色を表示したい場合 - int color2 = generator.getColor("[email protected]");、私の場合はuserIdをキーとして使用します私が得るものはすべてuserIdのものと同じ色です。私はこれをListViewとRecyclerViewの両方で試しましたが、常に同じ結果になりました。私の連絡先はすべて同じ色を共有しています。TextDrawable - キー(電子メール、ID)に基づいて色を表示

これは私のContactsAdapterからのコードです:私はint color2 = generator.getColor(holder.userName);を使用している場合

@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("[email protected]"); 
    TextDrawable textDrawable = builder.build(contactList.get(position).getUserName().substring(0,1), color2); 

    holder.thumbNail.setImageDrawable(textDrawable); 
} 

は、私は同じ名前のために異なる色を取得し、私はint color2 = generator.getColor(holder.getItemId());を使用する場合、私はすべてのuseridには同じ色を取得します。

+0

あなたはcolor2をチェックしてください。そしてcolor1の値は有効なカラーコードです。 –

+0

@Chetan私がcolor1を使用するとき、私は各ユーザーごとに異なる色を取得します。 – Kemo

+0

これをチェックするために静的なカラーコードを試してみましたか?TextDrawableに問題があるかもしれません。 –

答えて

2

int color2 = generator.getColor("[email protected]");行のコメントを外すと、同じユーザーが同じ色を持つことが予想されますが、他のユーザーは他の色を持つことが予想されます。

generator.getColor("some_example_string")は、リスト内のすべてのユーザーに対して常に同じ色を返します。私はあなたがgithubからそれをコピー貼り付けて、それがあなたのために働くことを期待しているのを見ます。著者の前の行に注意してください:

//キー

に基づいて色を生成するキーを提供する必要があり、色が生成されます、そのキーに基づきます。ユーザーの名前がキーと見なすことができると仮定すると、あなたが行うことができます。

generator.getColor(user.getName()); // e.g. "John Doe" 

を今、同じ色がJohn Doeのために生成されるたびに、他のユーザーのために別の色を。

+0

私は質問を更新しました(私は急いで投稿しましたので、正しく構成されていません)。私はキーを使用します - 私の場合は 'userId'ですが、私が得るのは同じ' userId'の色が違うということです。これは私が使っている行です: 'int color2 = generator.getColor(contact.getItemId());' – Kemo

+0

私のコードを 'int color2 = generator.getColor(contact.getUserId());'に書き換えました。ありがとう – Kemo

関連する問題