如上图所示,动态添加双项输入,删除时可清空内容。
public class AddWHClodcAdapter extends RecyclerView.Adapter<AddWHClodcAdapter.DataHolder> {
private Context context;
private List<String> list;
private List<String> alist = new ArrayList<>();//第一个输入框数据
private List<String> blist = new ArrayList<>();//第二个输入框数据
private List<String> clist = new ArrayList<>();//第三个输入框数据
public AddWHClodcAdapter(Context context, List<String> list) {
this.context = context;
this.list = list;
//初始化数据
for(int i=0;i<list.size();i++){
alist.add(i,"");
blist.add(i,"");
clist.add(i,"");
}
}
@Override
public AddWHClodcAdapter.DataHolder onCreateViewHolder(ViewGroup parent, int viewType) {
AddWHClodcAdapter.DataHolder holder = new AddWHClodcAdapter.DataHolder(LayoutInflater.from(context).inflate(R.layout.list_item_addwhc, parent,
false));
return holder;
}
@Override
public void onBindViewHolder(AddWHClodcAdapter.DataHolder holder, final int position) {
//设置删除取消输入框的tag
//设置第一个输入框=============================分割线============================
if (holder.normText.getTag() instanceof TextWatcher){
holder.normText.removeTextChangedListener ((TextWatcher)holder.normText.getTag());
}
holder.normText.setText(alist.get(position));
//1.新建一个监听
TextWatcher watcher = 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) {
if(TextUtils.isEmpty(s.toString())){
alist.add(position,"");
}else {
alist.add(position,s.toString());
}
}
};
//2.添加一个监听
holder.normText.addTextChangedListener(watcher);
//3.设置一个Tag
holder.normText.setTag(watcher);
//设置第二个输入框=============================分割线============================
//设置第三个输入框=============================分割线============================
holder.delImg.setOnClickListener(view ->{
if (list.size() != 1){
removeData(position);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
// 添加数据
public void addData(int position) {
// 在list中添加数据,并通知条目加入一条
list.add(position, "");
alist.add(position,"");
blist.add(position,"");
clist.add(position,"");
//添加动画
notifyItemInserted(position);
}
// 删除数据
public void removeData(int position) {
if(position!=0){
list.remove(position);
alist.remove(position);
blist.remove(position);
clist.remove(position);
//删除动画
notifyDataSetChanged();
}else{
}
}
//获取数据--
public List<String> getAListData(){
return alist;
}
//获取数据
public List<String> getBListData(){
return blist;
}
//获取数据
public List<String> getCListData(){
return clist;
}
/**
* ViewHolder的类,用于缓存控件
*/
class DataHolder extends RecyclerView.ViewHolder {
ImageView delImg;
EditText normText,numText,weightText;
//因为删除有可能会删除中间条目,然后会造成角标越界,所以必须整体刷新一下!
public DataHolder(View view) {
super(view);
normText = (EditText) view.findViewById(R.id.norm_text);
numText = (EditText) view.findViewById(R.id.num_text);
weightText = (EditText) view.findViewById(R.id.weight_text);
delImg = (ImageView) view.findViewById(R.id.del_img);
}
}
}
使用方式:
LinearLayoutManager mLayoutManager = new LinearLayoutManager(AppUtils.getContext());
weightRcy.setLayoutManager(mLayoutManager);
list.clear();
list.add("");
ClodcAdapter = new AddWHClodcAdapter(this, list);
weightRcy.setAdapter(ClodcAdapter);
addViewImg.setOnClickListener(view -> {
CountAdapter.addData(list.size());
});