From 8e6d7c8275117ca2659e7f82051f8af19741aa9d Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期五, 07 二月 2025 16:51:33 +0800 Subject: [PATCH] # --- app/src/main/java/com/example/agvcontroller/EditeAdapter.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 159 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/example/agvcontroller/EditeAdapter.java b/app/src/main/java/com/example/agvcontroller/EditeAdapter.java index 5249683..a6a04be 100644 --- a/app/src/main/java/com/example/agvcontroller/EditeAdapter.java +++ b/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(); + } } } -- Gitblit v1.9.1