2017-10-03 12 views
0

私はカスタムレイアウト(1 imageView + 2 TextViews)でrecyclerViewを持っている...RecyclerViewアイテムの色を変更するにはどうしたらいいですか?

質問:recyclerView項目のテキストが緑色である。ユーザーがクリックした場合、私は、赤に変更する必要がありますrecyclerViewの項目です。

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
    public TextView title,desc; 
    public ImageView thumbnail; 

    public MyViewHolder(View view) { 
     super(view); 
     itemView.setOnClickListener(this); 

     title = (TextView) view.findViewById(R.id.text1); 
     thumbnail = (ImageView) view.findViewById(R.id.thumbnail); 
     desc = (TextView) view.findViewById(R.id.desc); 
     whereToGo = title.getText().toString(); 
    } 



    @Override 
    public void onClick(View view) 
    { 


     Intent i = new Intent(mContext, DisplayLockedLesson.class); 
     i.putExtra("Lesson Name", title.getText().toString()); 
     i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     mContext.startActivity(i); 

     } 

    } 
} 

SO、ユーザーはrecyclerViewの項目をクリックすると、私は..レッスンアプリケーションを作ってるんだ、それは彼が前にレッスンを終えたユーザーに伝えるこのアイテムの色を変更...

ありがとう。

答えて

0

ハッシュマップまたはデータベースのいずれかに各項目にフラグを追加できると思います。 このフラグをitem onclicklistenerメソッドで変更すると、このフラグを読み取ってこのアイテムの色を変更することができます。

+0

リサイクラをクリックして表示する方法を教えてください。クリックしたアイテム? –

+0

アイテム番号とその条件でハッシュマップを作成することができます。 onclickアイテムメソッドの中で条件をチェックするかどうかをチェックします。 リサイクルモニターの内部には、条件に応じて色を選択してください。 アダプタコードを表示できる場合は、さらにお手伝いできます。 –

1

recyclerviewのモデル内では、isCheckedをブール値とし、それを基に色を設定できます。

+0

これはコメントにする必要があります!とにかく、このソリューションは、最後にクリックしたリサイクラビューのアイテムをモデルクラスに保存し、それに応じて背景を変更するのに最適です。 – Radhey

2

クリックしたテキストビューの位置を格納し、それをグローバルに宣言する変数を作成します。 viewholderで

private int clickedTextViewPos=-1; 

位置がクリックされるたびにクリック及び コールがnotifyDataSetChangedとして(その位置を設定)

notifyDataSetChanged() - これは、データが変更されたアダプターに通知します。

private class YourViewHolder extends RecyclerView.ViewHolder{ 

    public YourViewHolder(View itemView) { 
    super(itemView); 

    title.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      clickedTextViewPos = getAdapterPosition(); 
      notifyDataSetChanged(); 

      } 
     }); 
     } 
} 

位置が等しい場合、onBindViewHolderでテキストの色を赤色または緑色で表示します。

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    if(clickedTextViewPos==position){ 
      edtUser.setTextColor(edtUser.getContext().getResources().getColor(R.color.red)); 
    }else { 
      edtUser.setTextColor(edtUser.getContext().getResources().getColor(android.R.color.green)); 
    } 
} 
+0

50%働いています...私はRecyclerviewの項目をクリックすると赤に変わりますが、他の項目も赤に変わります... –

+0

どのようにすればコードに従うか... clickedTextViewPos shouldグローバル変数である – Anonymous

関連する問題