解决RecyclerView条目复用问题,实现添加文本框效果

 

import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class RecyAdapter extends RecyclerView.Adapter {

    private Activity activity;
    private ArrayList<String> list=new ArrayList<>();
    private int count;


    public RecyAdapter(Activity activity) {
        this.activity = activity;
        addItem();
    }

    public ArrayList<String> getList() {
        return list;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(activity).inflate(R.layout.item_option, parent, false);
        return new RecyclerView.ViewHolder(view) {};
    }

    public void addItem(){
        list.add("选项"+(++count)+"(1-25字)");
    }



    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

        EditText ed_option = holder.itemView.findViewById(R.id.ed_option);

        if(list.get(position).equals("选项"+count+"(1-25字)")){
            ed_option.setHint(list.get(position));
        }else {
            ed_option.setText(list.get(position));
        }

        ed_option.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) {
                //保存输入数据
                Toast.makeText(activity, "当前位置="+position, Toast.LENGTH_SHORT).show();
                list.remove(position);
                list.add(position,s.toString());
            }
        });

        //关闭条目复用
        holder.setIsRecyclable(false);

    }

    @Override
    public int getItemCount() {
        return list.size();
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值