在“回收”视图中,如何通过单击而不单击来突出显示一个适配器项 [英] In Recycle view how to Highlight always one adapter item with the click and without click

查看:115
本文介绍了在“回收”视图中,如何通过单击而不单击来突出显示一个适配器项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这里,我点击了项目以更改项目背景和颜色。我已将所单击的项目值存储在数据库中,并更改布局颜色和文本颜色,然后重新创建适配器并在刷新时再次显示列表。
但是当我得到它的位置时,布局颜色没有改变。请始终显示正确处理背景项颜色集的路径。

Here I clicked on the item to change item background and color. I've stored the clicked item value in the database and change the layout color and text color and recreating the adapter and showing the list again while refreshing. But layout colors not changed when I get its position. Please show the right path to handle the set of background item color always.

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

    private List<TaxiTypeResponse.Message> CarTypesModelsList;
    private Context mContext;
    VehicleTypeView vehicleTypeView;
    int I = -1;
    int idd = 0;
    int II = 0;
    Activity activity;
    GoogleMap map;
    List<VehicleClick> list;

    private SparseBooleanArray selectedItems;

    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);
            selectedItems = new SparseBooleanArray();
            view.setOnClickListener(this);
        }

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

    public LoadVehicleTypeAdapter(Context context, List<TaxiTypeResponse.Message> CarTypesModelsList, VehicleTypeView vehicleTypeView, Activity activity, GoogleMap map, List<VehicleClick> lists) {

        this.CarTypesModelsList = CarTypesModelsList;
        mContext = context;
        this.vehicleTypeView = vehicleTypeView;
        this.activity = activity;
        this.map = map;
        this.list = lists;
    }

    @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) {


        if (list.size() != 0) {
            II = Integer.parseInt(list.get(0).RideId);
            //setSelection(Integer.parseInt(list.get(0).RideId));
        }

        if (II == 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("#2196F3"));
        }

        SharedPreferences sharedPreferences = activity.getSharedPreferences("mSelected", Context.MODE_PRIVATE);
        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();
                try {
                    if (list.size() != 0) {
                        VehicleTypeFragment.myAppRoomDataBase.userDao().delete();
                        list.clear();
                    }
                    VehicleClick vehicleClick = new VehicleClick();
                    vehicleClick.setRideId(String.valueOf(position1));
                    VehicleTypeFragment.myAppRoomDataBase.userDao().insert(vehicleClick);
                    list.add(vehicleClick);
                } catch (Exception e) {

                }

            }
        });

        if (I == position) {
            holder.llRoot.setBackgroundColor(Color.parseColor("#999999"));
            holder.mCarType.setTextColor(Color.parseColor("#ffffff"));
            Animation bounce = AnimationUtils.loadAnimation(mContext, R.anim.bounce);
            holder.llRoot.startAnimation(bounce);
        } else {
            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(int position) {
        II = position;
        //notifyDataSetChanged();
    }

    public interface setOnitemclick {
        void ImageClick(View view, int position);
    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }
}


推荐答案

on BindViewHolder方法你将使用这个代码并在全局设置I = 0

on BindViewHolder method you'll use this code and set I=0 on globally

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

    SharedPreferences sharedPreferences = activity.getSharedPreferences("mSelected", Context.MODE_PRIVATE);
    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();
            try {
                if (list.size() != 0) {
                    VehicleTypeFragment.myAppRoomDataBase.userDao().delete();
                    list.clear();
                }
                VehicleClick vehicleClick = new VehicleClick();
                vehicleClick.setRideId(String.valueOf(position1));
                VehicleTypeFragment.myAppRoomDataBase.userDao().insert(vehicleClick);
                list.add(vehicleClick);
            } catch (Exception e) {

            }

        }
    });

    if (I == position) {
        holder.llRoot.setBackgroundColor(Color.parseColor("#999999"));
        holder.mCarType.setTextColor(Color.parseColor("#ffffff"));
        Animation bounce = AnimationUtils.loadAnimation(mContext, R.anim.bounce);
        holder.llRoot.startAnimation(bounce);
    } else {
        holder.llRoot.setBackgroundColor(Color.parseColor("#f3f3f3"));
        holder.mCarType.setTextColor(Color.parseColor("#2196F3"));
    }

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

这篇关于在“回收”视图中,如何通过单击而不单击来突出显示一个适配器项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆