如果之前单击此项目,如何更改RecyclerView项目的颜色?

时间:2017-10-03 05:18:48

标签: android android-recyclerview recycler-adapter

我有recyclerView个自定义布局(1 imageView + 2 TextViews)..

问题: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);

        }

    }
}

所以,我正在制作课程应用..当用户点击recyclerView的项目时,它会更改此项目的颜色,告诉用户他之前完成了课程...

谢谢。

3 个答案:

答案 0 :(得分:2)

创建一个变量,该变量将存储所单击的textview的位置并将其全局声明。

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));
    }
}

答案 1 :(得分:1)

我认为你可以在hashmap或数据库中为每个项添加一个标志。 在项目onclicklistener方法中更改此标志...然后您可以阅读此标志以更改此项目的颜色。

答案 2 :(得分:1)

在recyclerview模型中,使用布尔值isChecked,并根据该值设置颜色。