package com.example.agvcontroller;
|
|
import android.graphics.Color;
|
import android.text.Editable;
|
import android.text.TextWatcher;
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.EditText;
|
import android.widget.ImageButton;
|
|
import androidx.annotation.NonNull;
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import java.util.List;
|
|
public class EditeAdapter extends RecyclerView.Adapter<EditeAdapter.ViewHolder> {
|
|
private static List<AGVCar> itemList;
|
|
public EditeAdapter(List<AGVCar> itemList) {
|
this.itemList = itemList;
|
}
|
|
public static class ViewHolder extends RecyclerView.ViewHolder {
|
EditText agvNo;
|
EditText ip;
|
ImageButton btn;
|
|
public ViewHolder(@NonNull View itemView) {
|
super(itemView);
|
agvNo = itemView.findViewById(R.id.agvNo);
|
ip = itemView.findViewById(R.id.ip);
|
btn = itemView.findViewById(R.id.delete_button);
|
|
// 设置 agvNo 的文本变化监听
|
agvNo.addTextChangedListener(new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
// 文本变化之前
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
// 文本变化时
|
}
|
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
// 文本变化之后
|
int position = getAdapterPosition();
|
if (position != RecyclerView.NO_POSITION) {
|
AGVCar item = itemList.get(position);
|
item.setAgvNo(s.toString()); // 更新数据源
|
}
|
}
|
});
|
|
// 设置 ip 的文本变化监听
|
ip.addTextChangedListener(new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
// 文本变化之前
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
// 文本变化时
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
// 文本变化之后
|
int position = getAdapterPosition();
|
if (position != RecyclerView.NO_POSITION) {
|
AGVCar item = itemList.get(position);
|
item.setIp(s.toString()); // 更新数据源
|
}
|
}
|
});
|
|
itemView.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
Log.i("List","123");
|
}
|
});
|
|
|
}
|
}
|
|
@NonNull
|
@Override
|
public EditeAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
|
ViewHolder viewHolder = new EditeAdapter.ViewHolder(view);
|
view.setOnClickListener(this::onClick);
|
return viewHolder;
|
}
|
|
@Override
|
public int getItemViewType(int position) {
|
return R.layout.edite_view;
|
}
|
|
private void onClick(View view) {
|
if (mOnItemClickListener != null) {
|
mOnItemClickListener.onItemClick(view,(int)view.getTag());
|
}
|
}
|
|
private EditeAdapter.OnItemClickListener mOnItemClickListener = null;
|
|
public static interface OnItemClickListener {
|
void onItemClick(View view,int position);
|
}
|
|
public void removeItem(int position) {
|
itemList.remove(position);
|
notifyItemRemoved(position);
|
notifyItemRangeChanged(position, itemList.size()); // 更新剩余项的位置
|
}
|
|
@Override
|
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
if (itemList == null || itemList.isEmpty()) {
|
// 默认显示页面
|
//return 1;
|
} else {
|
AGVCar item = itemList.get(position);
|
int status = item.getStatus();
|
switch (status) {
|
case 0:
|
holder.itemView.setBackgroundColor(Color.parseColor("#D3D3D3"));
|
break;
|
default:
|
holder.itemView.setBackgroundColor(Color.parseColor("#90EE90"));
|
break;
|
}
|
// 清除旧的 TextWatcher
|
holder.agvNo.removeTextChangedListener((TextWatcher) holder.agvNo.getTag());
|
holder.ip.removeTextChangedListener((TextWatcher) holder.ip.getTag());
|
|
// 设置当前文本
|
holder.agvNo.setText(item.getAgvNo());
|
holder.ip.setText(item.getIp());
|
|
// 添加新的 TextWatcher
|
TextWatcher agvNoWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
item.setAgvNo(s.toString());
|
}
|
};
|
holder.agvNo.addTextChangedListener(agvNoWatcher);
|
holder.agvNo.setTag(agvNoWatcher);
|
|
TextWatcher ipWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
item.setIp(s.toString());
|
}
|
};
|
holder.ip.addTextChangedListener(ipWatcher);
|
holder.ip.setTag(ipWatcher);
|
|
}
|
// 设置删除按钮的点击事件
|
holder.btn.setOnClickListener(v -> {
|
Log.i("List",itemList.toString());
|
removeItem(position); // 调用删除方法
|
});
|
}
|
|
@Override
|
public int getItemCount() {
|
if (itemList == null || itemList.isEmpty()) {
|
return 0;
|
} else {
|
return itemList.size();
|
}
|
}
|
|
}
|