Как выделить отдельный текст и цвет фона при использовании режима корзины

Я буду использовать RecyclerView. И у меня в списке более 10 элементов. И мне нужно изменить цвет текста и макет фона одним щелчком по элементу, иначе цвет всего элемента не изменится. Подскажите, пожалуйста, правильный способ решения этой проблемы. Я попытаюсь изменить цвет в элементе щелчка BindViewHolder, ViewHolder и адаптера, но мне удалось изменить цвет, но не удалось изменить цвет обратно.

public class LoadVehicleTypeAdapter  extends RecyclerView.Adapter<LoadVehicleTypeAdapter.CarTypesHolder> {

    private List<TaxiTypeResponse.Message> CarTypesModelsList;
    private Context mContext;
    VehicleTypeView vehicleTypeView;
    setOnitemclick listener;
    private SparseBooleanArray selectedItems = new SparseBooleanArray();
    int I=-1;
    public class CarTypesHolder extends RecyclerView.ViewHolder {
        public CustomTextView mCarType;
        public CircleImageView mCarTypeImage;
        LinearLayout llRoot;
        CardView cardView;
        private SparseBooleanArray selectedItems = new SparseBooleanArray();
        setOnitemclick listener;

        public CarTypesHolder(final View view) {
            super(view);
            mCarType = (CustomTextView) view.findViewById(R.id.frag_cartypes_inflated_name);
            mCarTypeImage = (CircleImageView) view.findViewById(R.id.frag_cartype_inflated_frameImage);
            llRoot = (LinearLayout)view.findViewById(R.id.root1);
            cardView=(CardView) view.findViewById(R.id.cardf);


        }

        public void setOnItemClickListner(setOnitemclick listener12) {
            listener=listener12;
        }

    }
    public void setOnItemClickListner(setOnitemclick listener12) {
        listener=listener12;
    }


    public LoadVehicleTypeAdapter(Context context, List<TaxiTypeResponse.Message> CarTypesModelsList, VehicleTypeView vehicleTypeView) {
        this.CarTypesModelsList = CarTypesModelsList;
        mContext = context;
        this.vehicleTypeView = vehicleTypeView;
    }


    @Override
    public CarTypesHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView;
        itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.frag_cartype_inflated_view, parent, false);
        return new CarTypesHolder(itemView);
    }

    @SuppressLint("ResourceType")
    @Override
    public void onBindViewHolder(final CarTypesHolder holder, final int position) {

        TaxiTypeResponse.Message carTypesModel = CarTypesModelsList.get(position);
        I=CarTypesModelsList.get(position).getID();
         holder.mCarType.setText(carTypesModel.getName());
         holder.mCarTypeImage.setBackgroundResource(R.drawable.wait);
        int color = Color.parseColor(PreferenceHandler.readString(mContext,PreferenceHandler.SECONDRY_COLOR,"#006fb6"));
        holder.llRoot.setSelected(selectedItems.get(position, false));
        holder.mCarType.setTextColor(color);
        holder.setOnItemClickListner(listener);

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

                I=position;
                if (I==position)
                {

                    holder.llRoot.setBackgroundColor(Color.parseColor("#999999"));
                    holder.mCarType.setTextColor(Color.parseColor("#ffffff"));

                }
                else
                {
                    holder.llRoot.setBackgroundColor(Color.parseColor("#f3f3f3"));
                    holder.mCarType.setTextColor(Color.parseColor("#00000"));

                }

            }
        });



       Picasso.with(mContext).load(carTypesModel.getImagePath()).into(holder.mCarTypeImage);

    }

    @Override
    public long getItemId(int position) {
        return CarTypesModelsList.get(position).getID();
    }

    @Override
    public int getItemCount() {
        return CarTypesModelsList.size();
    }

    public void setSelection(LinearLayout imageView,CustomTextView textView,boolean value,int position){
        if (value){

            imageView.setBackgroundColor(Color.parseColor("#999999"));
            textView.setTextColor(Color.parseColor("#FFFFFF"));

        }else{
            System.out.println("11111111111111111000000111111111111");
            imageView.setBackgroundColor(Color.parseColor("#f3f3f3"));
            textView.setTextColor(Color.parseColor("#2196F3"));

         }
     }
     public interface  setOnitemclick{
        void ImageClick(int position, String Name,String Description,int id);
         void ImageClickfade(int position, String Name,String Description,int id);
     }
    @Override
    public int getItemViewType(int position) {
        return position;
    }



}

не могли бы вы поделиться своим классом адаптера

Mehul Kabaria 06.12.2018 10:57

@Mehul Я обновлю код.

user10025786 06.12.2018 11:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
114
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Замените свой щелчок, как показано ниже

public void onBindViewHolder(final CarTypesHolder holder, final int position) {

    TaxiTypeResponse.Message carTypesModel = CarTypesModelsList.get(position);
    I=CarTypesModelsList.get(position).getID();
     holder.mCarType.setText(carTypesModel.getName());
     holder.mCarTypeImage.setBackgroundResource(R.drawable.wait);
    int color = Color.parseColor(PreferenceHandler.readString(mContext,PreferenceHandler.SECONDRY_COLOR,"#006fb6"));
    holder.llRoot.setSelected(selectedItems.get(position, false));
    holder.mCarType.setTextColor(color);
    holder.setOnItemClickListner(listener);

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

            I=position;

                holder.llRoot.setBackgroundColor(Color.parseColor("#999999"));
                holder.mCarType.setTextColor(Color.parseColor("#ffffff"));


            notifyDataSetChanged()

        }
    });

    if (I==position)
    {

        holder.llRoot.setBackgroundColor(Color.parseColor("#999999"));
        holder.mCarType.setTextColor(Color.parseColor("#ffffff"));

    }
    else
    {
        holder.llRoot.setBackgroundColor(Color.parseColor("#f3f3f3"));
        holder.mCarType.setTextColor(Color.parseColor("#00000"));

    }



   Picasso.with(mContext).load(carTypesModel.getImagePath()).into(holder.mCarTypeImage);

}

Я попробую код, но это нужно сделать, чтобы изменить цвет и фон, но не вернуться к предыдущему цвету

user10025786 06.12.2018 11:19

пожалуйста, сначала протестируйте программу, а затем обновите. В моем побочном коде можно было изменить цвет и изменить цвет фона в части else. И в части if он перейдет в часть if, но ничего не изменит.

user10025786 06.12.2018 13:14
Ответ принят как подходящий

Вы можете попробовать это, Вы будете использовать для обновления gradle

maven { url "https://maven.google.com" }

и обновите код

public class LoadVehicleTypeAdapter  extends RecyclerView.Adapter<LoadVehicleTypeAdapter.CarTypesHolder> {

private List<TaxiTypeResponse.Message> CarTypesModelsList;
private Context mContext;
VehicleTypeView vehicleTypeView;
int I=-1;
public class CarTypesHolder extends RecyclerView.ViewHolder implements  View.OnClickListener {
    public CustomTextView mCarType;
    public CircleImageView mCarTypeImage;
    LinearLayout llRoot;
    CardView cardView;
    setOnitemclick listener;
    public void setOnItemClickListner(setOnitemclick listener)
    {
        this.listener=listener;
    }

    public CarTypesHolder(View view) {
        super(view);

        mCarType = (CustomTextView) view.findViewById(R.id.frag_cartypes_inflated_name);
        mCarTypeImage = (CircleImageView) view.findViewById(R.id.frag_cartype_inflated_frameImage);
        llRoot = (LinearLayout)view.findViewById(R.id.root1);
        cardView=(CardView) view.findViewById(R.id.cardf);
        view.setOnClickListener(this);

    }


    @Override
    public void onClick(View v) {
    listener.ImageClick(v,getAdapterPosition());
    }
}


public LoadVehicleTypeAdapter(Context context, List<TaxiTypeResponse.Message> CarTypesModelsList, VehicleTypeView vehicleTypeView) {
    this.CarTypesModelsList = CarTypesModelsList;
    mContext = context;
    this.vehicleTypeView = vehicleTypeView;
}


@Override
public CarTypesHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.frag_cartype_inflated_view, parent, false);
    return new CarTypesHolder(itemView);
}

@SuppressLint("ResourceType")
@Override
public void onBindViewHolder( final  CarTypesHolder holder,  int position) {

    TaxiTypeResponse.Message carTypesModel = CarTypesModelsList.get(position);
     holder.mCarType.setText(carTypesModel.getName());
     holder.mCarTypeImage.setBackgroundResource(R.drawable.wait);
    int color = Color.parseColor(PreferenceHandler.readString(mContext,PreferenceHandler.SECONDRY_COLOR,"#006fb6"));
    holder.mCarType.setTextColor(color);
    holder.setOnItemClickListner(new setOnitemclick() {
        @Override
        public void ImageClick(View v,int position1) {
            I=position1;
            notifyDataSetChanged();

        }
    });
    if (I==position)
    {
        System.out.println("11100011111....");
        holder.llRoot.setBackgroundColor(Color.parseColor("#999999"));
        holder.mCarType.setTextColor(Color.parseColor("#ffffff"));

    }
    else
    {
        System.out.println("11100011111----");
        holder.llRoot.setBackgroundColor(Color.parseColor("#f3f3f3"));
        holder.mCarType.setTextColor(Color.parseColor("#2196F3"));

    }

   Picasso.with(mContext).load(carTypesModel.getImagePath()).into(holder.mCarTypeImage);

}

@Override
public long getItemId(int position) {
    return CarTypesModelsList.get(position).getID();
}

@Override
public int getItemCount() {
    return CarTypesModelsList.size();
}

public void setSelection(LinearLayout imageView,CustomTextView textView,boolean value,int position){
    if (value){

        imageView.setBackgroundColor(Color.parseColor("#999999"));
        textView.setTextColor(Color.parseColor("#FFFFFF"));

    }else{
        System.out.println("11111111111111111000000111111111111");
        imageView.setBackgroundColor(Color.parseColor("#f3f3f3"));
        textView.setTextColor(Color.parseColor("#2196F3"));

     }
 }
 public interface  setOnitemclick{
    void ImageClick(View view,int position);
 }
@Override
public int getItemViewType(int position) {
    return position;
}

}

Другие вопросы по теме