2016-11-15 4 views
0

私のrecyclerviewは、2つのテキストビューと1つのイメージビューを表示します。アダプタのonbindviewholderの中で、私は2 textviewのテキストをうまく設定することができますが、色を変更すると、それらは見えなくなります。色をrecyclerviewアイテムに変更する

また、recyclerviewアイテムを削除してから元に戻すと、色の変更が表示されます。私は間違って何をしていますか?

私はそれがnotify ...()メソッドの1つと関係がありますが、それらのうちの1つをonbindviewholderの中に入れてみると、起動時にアプリケーションがクラッシュすることがあります。

public class MemoListAdapter extends RecyclerView.Adapter<MemoListAdapter.ViewHolder> { 

private CardView cv; 
private List<Memo> mMemos; 
private Context mContext; 
public List<Memo> memosToRemove; 

//pass in the list of notes to display 
public MemoListAdapter(List<Memo> memos, Context context) { 
    mMemos = memos; 
    mContext = context; 

} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_memo_list, parent, false); 
    ViewHolder viewHolder = new ViewHolder(rowView, mContext, mMemos); 


    return viewHolder; 
} 

//@param holder & position - identifies the Note we are working with 
@Override 
public void onBindViewHolder(final ViewHolder holder, int position) { 

    holder.memoTitle.setText(mMemos.get(position).getTitle()); 
    holder.memoContent.setText(mMemos.get(position).getContent()); 
    holder.memoIcon.setColorFilter(mMemos.get(position).getNotificationColor()); 
    holder.memoTitle.setTextColor(mMemos.get(position).getNotificationColor()); 
} 

ここに正しく、私はその後すぐに、その後のメモをスワイプ色

public void onItemRemove(final RecyclerView.ViewHolder viewHolder, final RecyclerView mRecyclerView) { 

    final int adapterPosition = viewHolder.getAdapterPosition(); 
    final int memoID = mMemos.get(adapterPosition).getId(); 
    final DatabaseHandler db = new DatabaseHandler(mContext); 
    final Memo memo = db.getMemo(memoID); 

    mMemos.remove(adapterPosition); 
    db.deleteMemo(memo); 
    notifyItemRemoved(adapterPosition); 

    Snackbar snackbar = Snackbar 
      .make(mRecyclerView, mContext.getString(R.string.note_deleted), Snackbar.LENGTH_LONG) 
      .setAction(R.string.undo_string, new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        mMemos.add(adapterPosition, memo); 
        notifyItemInserted(adapterPosition); 
        mRecyclerView.scrollToPosition(adapterPosition); 
        db.addMemo(memo); 
       } 
      }); 

[IMAGE] When app opens

への変更を表示する元に戻す方法はあります

[IMAGE] After I press the undo delete on the snackbar

+0

に基づいて、データベースの代わりに、メモを取るに依存するから、あなたは私に、「mMemos.get(位置).getNotificationColor()」 –

+2

を変更します試してみてくださいholder.memoTitle.setTテストケースのextColor(Color.RED)?そして、それが動作しているかどうかを確認してください –

+1

@snlvtrの価値を伝える@snlvtr色programmatially – Raghavendra

答えて

0

@Override 
public void onBindViewHolder(final ViewHolder holder, int position) { 
    Memo m = mMemos.get(position); 
    int id = m.getId(); 
    DatabaseHandler db = new DatabaseHandler(mContext); 
    Memo memo = db.getMemo(id); 
    int color = memo.getNotificationColor(); 

    holder.memoTitle.setText(mMemos.get(position).getTitle()); 
    holder.memoContent.setText(mMemos.get(position).getContent()); 
    holder.memoIcon.setColorFilter(color); 
    holder.memoTitle.setTextColor(color); 

は基本的に私が実際にアイテムや「メモ」を取らなければなりませんでした私の場合には直接@param位置

1
を元に戻す押します
@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    if(position == selected_item) { 
     holder.title.setTextColor(Color.parseColor("#00aaff")); 
     holder.imgViewIcon.setBackgroundResource(R.drawable.ic_circle); 
    } else { 
     holder.title.setTextColor(Color.parseColor("#00000")); //actually you should set to the normal text color 
     holder.imgViewIcon.setBackgroundResource(0); 
    } 
    NavDrawerItem current = data.get(position); 
    holder.title.setText(current.getTitle()); 
    holder.imgViewIcon.setImageResource(current.getIcon()); 


} 

編集:削除されたリンク(OPに編集することになった)

これにonBindViewHolderを編集することによって、問題を解決するために管理
関連する問題