#
whycq
2025-02-06 17bb52d9337328323f5f8d2a806cf4f445673b4a
app/src/main/java/com/example/agvcontroller/EditeAdapter.java
@@ -1,23 +1,85 @@
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.TextView;
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 {
        TextView agvNo;
        TextView ip;
        EditText agvNo;
        EditText ip;
        ImageButton btn;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            agvNo = itemView.findViewById(R.id.item_agvNo);
            ip = itemView.findViewById(R.id.item_ip);
            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
@@ -26,23 +88,112 @@
                }
            });
        }
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return null;
    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() {
        return 0;
        if (itemList == null || itemList.isEmpty()) {
            return 0;
        } else {
            return itemList.size();
        }
    }
}