2017-12-08 120 views
0

cardviewの色をRecyclerviewに変更したいのですが、文字列がQRコードの文字列と一致するとします。文字列が一致すればトーストを表示できますが、Recyclerviewの特定の要素の色も変更したいと思います。ここ recyclerviewの要素の色を変更するにはどうすればいいですか?

は、私は結果を取得しますActivityResultに今
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() { 
       @Override 
       public void onItemClick(View view, int position) { 
        tempString = passengerDataModelList.get(position).getPnr(); 
        tempClickPosi = position; 
        Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
        startActivityForResult(intent, 0); 

       } 
      })); 

スキャン

ための項目を選択するコードです:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
      if (requestCode == 0) { 
       if (resultCode == RESULT_OK) { 
        String contents = intent.getStringExtra("SCAN_RESULT"); 
        String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 


        if(contents.equalsIgnoreCase(tempString)){ 
         Toast.makeText(this, "String MATCHED", Toast.LENGTH_SHORT).show(); 
///// Here I want to change the color of that item in recycler view 
        }else if(!contents.equalsIgnoreCase(tempString)){ 
         Toast.makeText(this, "String NOT MATCHED", Toast.LENGTH_SHORT).show(); 
        }else { 
         Toast.makeText(this, "Error in scanning", Toast.LENGTH_SHORT).show(); 
        } 


       } 
      } 

     } 

soから特定の項目の色を変更するために私を助けてくださいアクティビティ。より多くの情報が必要な場合は親切にコメントしてください。 は

答えて

1

を通知ありがとうございましたブール値を確認する

boolean matched = passengerDataModelList.get(position).isMatched(); 
cardview.setBackgroundColor(matched ? R.color.matched_color : R.color.unmatched_color); 

アクティビティ

+0

色がマッチした色に変更されていません。当初、recyclerviewが作成されたときに、すべてのアイテムの色が一致しませんでしたが、文字列が一致した後は変更されませんでした。 – VinayakPurohit

+0

notifyDataSetChangedは機能しません。ブール・マッチはその特定の要素に対して変更されていますが、その項目の色は変更されていません – VinayakPurohit

+0

さて、クイック・フィックスとして 'list'から' item'を削除し、 'notifyDataSetChanged'を呼び出す前に追加して、 –

0

はカラー用に別のフラグを作成し、文字列の後に、特定のアイテムの更新フラグを一致させ、その後、あなたのアダプタはあなただけrecyclerview'sbindviewに続いてモデル

public class PassengerData{ 

    //add this property 
    private boolean isMatched = false; 

    void setMatched(boolean matched){ 
     this.isMatched = matched; 
    } 

    boolean isMatched(){ 
     return isMatched; 
    } 

} 

を持っていると仮定するために

0

私の理解によれば、文字列が一致すれば背景をカラフルにしたいと思う。 RecyclerViewでは、行が膨らんでいるので、行にはレイアウトが必要です。文字列が一致する場合は、以下のように使用できます。以下のコードは目的を理解するためのものです。それに応じてカスタマイズしてください。ここでは、条件に基づいてRecycler Itemの色を変更していますので、この条件を記述しました。あなたはそれを修正することができ

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
if(position==0){ 
    holder.itemView.setBackgroundColor(Color.BLACK); 
}else{ 
    holder.itemView.setBackgroundColor(Color.GREY); 
} 
holder.mTextView.setText(mDataArray.get(position)); 

}

関連する問題