pdlivexp/OneToOne/src/main/java/com/shayu/onetoone/adapter/MsgGreetConfigAdapter.java
2023-11-01 18:29:23 +08:00

160 lines
5.0 KiB
Java

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<MsgGreetConfigAdapter.ViewHolder> {
List<GreetBean> mList;
Context mContext;
OnItemClickListener<GreetBean> 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<GreetBean> mList) {
if (mList.isEmpty()) {
GreetBean bean = new GreetBean();
mList.add(bean);
}
this.mList = mList;
notifyDataSetChanged();
}
public void setDeleteListener(OnItemClickListener<GreetBean> deleteListener) {
this.deleteListener = deleteListener;
}
public List<GreetBean> getNotEmptyList() {
List<GreetBean> tmp = new ArrayList<>();
for (GreetBean bean : mList) {
if (!StringUtil.isEmpty(bean.getContent())) {
tmp.add(bean);
}
}
return tmp;
}
public List<GreetBean> 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());
}
}
});
}
}
}