160 lines
5.0 KiB
Java
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());
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|