package com.shayu.onetoone.adapter; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.text.Editable; import android.text.InputFilter; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.shayu.onetoone.R; import com.shayu.onetoone.bean.GreetBean; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import java.util.ArrayList; import java.util.List; /** * 打招呼设置适配器 */ public class MsgGreetConfigAdapter extends RecyclerView.Adapter { List mList; Context mContext; OnItemClickListener deleteListener; Handler handler; public static final String TAG="打招呼列表"; public MsgGreetConfigAdapter(Context mContext) { this.mContext = mContext; this.mList = new ArrayList<>(); handler = new Handler(Looper.getMainLooper()); } public void setList(List mList) { if (mList.isEmpty()) { GreetBean bean = new GreetBean(); mList.add(bean); } this.mList = mList; notifyDataSetChanged(); } public void setDeleteListener(OnItemClickListener deleteListener) { this.deleteListener = deleteListener; } public List getNotEmptyList() { List tmp = new ArrayList<>(); for (GreetBean bean : mList) { if (!StringUtil.isEmpty(bean.getContent())) { tmp.add(bean); } } return tmp; } public List getmList() { return mList; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_msg_greet_config, viewGroup, false)); } @Override public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) { viewHolder.setData(mList.get(i), i); } @Override public int getItemCount() { return mList.size(); } public void addItem(GreetBean GreetBean) { mList.add(GreetBean); notifyItemChanged(getItemCount() - 1); } public void clear() { mList.clear(); notifyDataSetChanged(); new Handler(Looper.getMainLooper()).postDelayed(() -> { mList.add(new GreetBean()); notifyDataSetChanged(); }, 300); } public class ViewHolder extends RecyclerView.ViewHolder { private EditText editText; private View edit; private View del; public ViewHolder(@NonNull View itemView) { super(itemView); editText = itemView.findViewById(R.id.editTextText); edit = itemView.findViewById(R.id.edit); del = itemView.findViewById(R.id.del); editText.setEnabled(false); itemView.setOnClickListener(v -> notifyDataSetChanged()); } public void setData(GreetBean bean, int position) { editText.clearFocus(); del.setOnClickListener(v -> { notifyDataSetChanged(); handler.postDelayed(() -> { editText.setEnabled(false); mList.remove(position); if (deleteListener != null) { deleteListener.onItemClick(bean, mList.size()); } notifyDataSetChanged(); }, 50); }); Log.i(TAG, position+"|"+bean.getContent()+"||"+mList.size()); edit.setOnClickListener(v -> { mList.get(position).setEdit(true); editText.setEnabled(true); editText.requestFocus(); }); if (bean.getContent() == null) { editText.setEnabled(true); editText.setText(""); editText.requestFocus(); } else { editText.setText(bean.getContent()); editText.setEnabled(false); } editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(50)}); editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus && editText.getText().toString().length() > 0 && mList.size() > position) { mList.get(position).setContent(editText.getText().toString()); editText.setEnabled(false); Log.d(TAG, "设置文本:"+position+" → "+editText.getText().toString()); } } }); } } }