Java 循环视图适配器单击时高亮显示单个项目的方式
我正在使用recycler视图,并根据项目要求实现此功能。但在我的例子中,项目会高亮显示,但不会再次取消高亮显示。 我不知道在哪里单击项目来创建单击功能,以及如何取消项目的高亮显示。请告诉我正确的方法来解决代码Java 循环视图适配器单击时高亮显示单个项目的方式,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在使用recycler视图,并根据项目要求实现此功能。但在我的例子中,项目会高亮显示,但不会再次取消高亮显示。 我不知道在哪里单击项目来创建单击功能,以及如何取消项目的高亮显示。请告诉我正确的方法来解决代码 public class LoadVehicleTypeAdapter extends RecyclerView.Adapter<LoadVehicleTypeAdapter.CarTypesHolder> { private List<TaxiTypeRe
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;
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("#999999"));
holder.mCarType.setTextColor(Color.parseColor("#999999"));
}
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;
}
}
公共类LoadVehicleTypeAdapter扩展了RecyclerView.Adapter{
私有列表CarTypesModelsList;
私有上下文;
车辆类型视图车辆类型视图;
setOnitemclick监听器;
专用SparseBooleanArray selectedItems=新SparseBooleanArray();
int I=-1;
公共类CarTypesHolder扩展了RecyclerView.ViewHolder{
公共CustomTextView mCarType;
公共CircleImageView mCarTypeImage;
根的线性布局;
卡德维尤;
专用SparseBooleanArray selectedItems=新SparseBooleanArray();
setOnitemclick监听器;
公共CarTypesHolder(最终视图){
超级(视图);
mCarType=(CustomTextView)view.findViewById(R.id.frag\u cartypes\u name);
mCarTypeImage=(CircleImageView)view.findViewById(R.id.frag\u cartype\u frameImage);
llRoot=(LinearLayout)view.findviewbyd(R.id.root1);
cardwiew=(cardwiew)view.findViewById(R.id.cardf);
}
公共无效setOnItemClickListner(setOnitemclick listener12){
监听器=监听器12;
}
}
公共无效setOnItemClickListner(setOnitemclick listener12){
监听器=监听器12;
}
公共加载车辆类型适配器(上下文上下文、列表类型模型列表、车辆类型视图车辆类型视图){
this.CarTypesModelsList=CarTypesModelsList;
mContext=上下文;
this.vehicleTypeView=vehicleTypeView;
}
@凌驾
公共CarTypesHolder onCreateViewHolder(视图组父级,int-viewType){
查看项目视图;
itemView=LayoutInflater.from(parent.getContext())
.充气(R.layout.frag\u cartype\u充气视图,父视图,false);
返回新的CarTypesHolder(itemView);
}
@SuppressLint(“资源类型”)
@凌驾
BindViewHolder上的公共无效(最终CartypeShoholder holder,最终int位置){
TaxiTypeResponse.Message carTypesModel=CarTypesModelsList.get(位置);
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(彩色);
holder.setOnItemClickListner(监听器);
holder.llRoot.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
I=位置;
holder.llRoot.setBackgroundColor(Color.parseColor(“#999999”);
holder.mCarType.setTextColor(Color.parseColor(“#ffffff”));
notifyDataSetChanged();
}
});
if(I==位置)
{
holder.llRoot.setBackgroundColor(Color.parseColor(“#999999”);
holder.mCarType.setTextColor(Color.parseColor(“#ffffff”));
}
其他的
{
holder.llRoot.setBackgroundColor(Color.parseColor(“#999999”);
holder.mCarType.setTextColor(Color.parseColor(“#999999”);
}
将(carTypesModel.getImagePath())加载到(holder.mCarTypeImage)中;
}
@凌驾
公共长getItemId(int位置){
返回CarTypesModelsList.get(position.getID();
}
@凌驾
public int getItemCount(){
返回CarTypesModelsList.size();
}
public void setSelection(LinearLayout imageView、CustomTextView textView、布尔值、int位置){
如果(值){
imageView.setBackgroundColor(Color.parseColor(#999999”);
textView.setTextColor(Color.parseColor(#FFFFFF”);
}否则{
系统输出打印项次(“11111111 000000 111111111”);
imageView.setBackgroundColor(Color.parseColor(“#f3”);
textView.setTextColor(Color.parseColor(#2196F3));
}
}
公共接口setOnitemclick{
void ImageClick(int位置、字符串名称、字符串描述、int id);
void ImageClickfade(整数位置、字符串名称、字符串描述、整数id);
}
@凌驾
public int getItemViewType(int位置){
返回位置;
}
}
我将使用它来更新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();
System.out.println("11100011111");
holder.llRoot.setBackgroundColor(Color.parseColor("#999999"));
holder.mCarType.setTextColor(Color.parseColor("#ffffff"));
}
});
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;
}
公共类LoadVehicleTypeAdapter扩展了RecyclerView.Adapter{
私有列表CarTypesModelsList;
私有上下文;
车辆类型视图车辆类型视图;
int I=-1;
公共类CarTypesHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
公共CustomTextView mCarType;
公共CircleImageView mCarTypeImage;
根的线性布局;
卡德维尤;
setOnitemclick监听器;
public void setOnItemClickListner(setOnitemclick侦听器)
{
this.listener=listener;
}
公共CarTypesHolder(视图){
超级(视图);
mCarType=(CustomTextView)view.findViewById(R.id.frag\u cartypes\u name);
mCarTypeImage=(CircleImageView)view.findViewById(R.id.frag\u cartype\u frameImage);
llRoot=(LinearLayout)view.findviewbyd(R.id.root1);
cardwiew=(cardwiew)view.findViewById(R.id.cardf);
view.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
ImageClick(v,getAdapterPosition());
}
}
公共加载车辆类型适配器(上下文上下文、列表类型模型列表、车辆类型视图车辆