2017-12-01 7 views
-1

私は、ユーザーが入力したフォームのデータを表示するrecyclerViewを持っています。私は、recyclerViewに新しいエントリがあるたびに、ユーザが入力した単語の最初の文字がgmailの受信ボックスのようなイメージビューのアイコンに表示されるようにしたいと思います。Gmailのようなアイコンでレターを使ってrecyclerViewを作成する

私はこれを得ることができましたenter image description hereあなたが見ることができるように、最初の文字の代わりに私はかなり数字があります。

また、ユーザーが新しいフォームを検証するたびに、以前のフォームのアイコンの色が変更されますが、フォームが既に有効な場合、そのアイコンは固定され、新しいそれはランダムです。私はそれがステップのチュートリアルバイステップは、ちょうどあなたのrequirmentが好きだリンクを言及したの下にここで

package cm.mavis.easytravel.ui_Formulaire; 

import android.content.Context; 
import android.database.Cursor; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.amulyakhare.textdrawable.TextDrawable; 
import com.amulyakhare.textdrawable.util.ColorGenerator; 

import cm.mavis.easytravel.R; 

import static android.text.TextUtils.concat; 


public class AdaptateurFormulaire extends RecyclerView.Adapter<AdaptateurFormulaire.ViewHolder> { 
private Cursor cursor; 
private Context context; 
private ColorGenerator generator = ColorGenerator.MATERIAL; 


public static class ViewHolder extends RecyclerView.ViewHolder { 
    // Campos respectivos de un item 
    public TextView nom; 
    public TextView agence; 
    public TextView date; 
    ImageView letter; 

    public ViewHolder(View v) { 
     super(v); 
     nom = v.findViewById(R.id.monto); 
     agence = v.findViewById(R.id.etiqueta); 
     date = v.findViewById(R.id.date); 
     letter = v.findViewById(R.id.imag_recyclerview); 
    } 

} 

public AdaptateurFormulaire(Context context) { 
    this.context= context; 


} 

@Override 
public int getItemCount() { 
    if (cursor!=null) 
     return cursor.getCount(); 
    //return dataList == null? 0 : dataList.size(); 
    return 0; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.item_layout, viewGroup, false); 
    return new ViewHolder(v); 
} 

@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    cursor.moveToPosition(i); 

    String nom; 
    String date; 
    String agence; 
    String letter; 

    letter = String.valueOf(cursor.getPosition()); 
    TextDrawable drawable = TextDrawable.builder().buildRound(letter, generator.getRandomColor()); 
    agence = cursor.getString(3); 
    nom = cursor.getString(1); 
    date = cursor.getString(6); 

    viewHolder.letter.setImageDrawable(drawable); 
    viewHolder.nom.setText("$"+agence); 
    viewHolder.agence.setText(nom); 
    viewHolder.date.setText(date); 

} 

public void swapCursor(Cursor newCursor) { 
    cursor = newCursor; 
    notifyDataSetChanged(); 
} 

public Cursor getCursor() { 
    return cursor; 
} 


} 
+0

あなたは文字のリストを定義し、マッピングすることができ... –

+0

私がしようとしますが、ユーザが入力した場合Wordのメールを送る方法を私の手紙リストに移動して置くために「J」の文字を取るために「J」で始まりますアイコンの中に? – Anubis

答えて

1

は、ここに私のアダプタです。これをチェックしてください!

https://www.androidhive.info/2017/02/android-creating-gmail-like-inbox-using-recyclerview/

+1

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になる可能性があります.---リンクを含むコメントは完璧に機能しています.----良い答え**は、何が行われたのか、 OPのためにだけでなく、将来の来訪者のためにこのようにして行われました。 –

+1

あなたの意見を理解してください。ご説明をいただき、ありがとうございます。 –

0

あなたは変数の2つの完全に異なる種類の名「文字」を使用し、すべての最初の。 1つの文字列と1つのImageView。良い練習のために、異なる名前をつけてください。 2番目に、これはlibraryを使用していますか?はいの場合は、円の中に文字を作成するための要素が1つの文字または文字列を渡す必要があります。その文字をフェッチするには、ユーザーが挿入した単語の最初の文字を取得するだけです。

//Getting 1st letter of a string in java 
//insertedString is the String inserted by the user 
char charAtBeggining = insertedString.charAt(0); 

今だけのアイコンビルダーにその文字を渡します。

TextDrawable drawable = TextDrawable.builder().buildRound(letter, generator.getRandomColor()); 
関連する問題