IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【无标题】recyclerView上有多个EditText 输入值并且获取值 -> 正文阅读

[移动开发]【无标题】recyclerView上有多个EditText 输入值并且获取值

public class StuExamExciseFillBlankAdapter extends RecyclerView.Adapter<StuExamExciseFillBlankAdapter.MyViewHolder> {
    private int positon;

    private final Context context;
    private final Fragment fragment;
    private onTextChangeListener mTextListener;
    private List<ExamQuestionDetailBean.DataBean.AnswerListBean> examQuestionAnswers=new ArrayList<>();

    public StuExamExciseFillBlankAdapter(Context context, Fragment fragment) {
        this.context=context;
        this.fragment = fragment;
    }
    public void setData(List<ExamQuestionDetailBean.DataBean.AnswerListBean> answerListBeanList) {
        this.examQuestionAnswers=answerListBeanList;
        notifyDataSetChanged();
    }
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_stu_exam_fill_blank_list, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) {
        positon = position;
        holder.txtFillName.setText("填空题"+(position+1)+":");

        //通过设置tag,防止position紊乱
        holder.edit_answer.setTag(positon);
        holder.edit_answer.setTextColor(context.getResources().getColor(R.color.color_ff333333));
        if (holder instanceof MyViewHolder) {
            //1、为了避免TextWatcher在第2步被调用,提前将他移除。
            if (((MyViewHolder) holder).edit_answer.getTag() instanceof TextWatcher) {
                ((MyViewHolder) holder).edit_answer.removeTextChangedListener((TextWatcher) (((MyViewHolder) holder).edit_answer.getTag()));
                 }
            // 第2步:移除TextWatcher之后,设置EditText的Text。
                ((MyViewHolder) holder).edit_answer.setText(examQuestionAnswers.get(position).getContent());

               TextWatcher watcher = new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }


                @Override
                public void afterTextChanged(Editable editable) {
                    if(holder.edit_answer.hasFocus()){//判断当前EditText是否有焦点在
                        //通过接口回调将数据传递到Activity中
                        mTextListener.onTextChanged(holder.getLayoutPosition(),holder.edit_answer.getText().toString());
                    }
                }
            };
            //设置EditText的焦点监听器判断焦点变化,当有焦点时addTextChangedListener,失去焦点时removeTextChangedListener
            holder.edit_answer.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if(hasFocus){
                        holder.edit_answer.addTextChangedListener(watcher);
                    }else{
                        holder.edit_answer.removeTextChangedListener(watcher);
                    }
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return examQuestionAnswers==null?0:examQuestionAnswers.size();
    }
    @Override
    public int getItemViewType(int position){
        return position;
    }

    class MyViewHolder extends RecyclerView.ViewHolder{
        @BindView(R.id.txtFillName)
        TextView txtFillName;//填空题一
        @BindView(R.id.edit_answer)
        EditText edit_answer;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);
        }
    }

    public interface onTextChangeListener{
        void onTextChanged(int position,String content);
    }
    //设置自定义接口成员变量
    public void setOnTextChangeListener(onTextChangeListener onTextChangeListener){
        this.mTextListener=onTextChangeListener;
    }
}

下面为回调的方法:

public List<ExamQuestionDetailBean.DataBean.AnswerListBean> answerListBeanList=new ArrayList<>();
exciseFillBlankAdapter.setOnTextChangeListener(new StuExamExciseFillBlankAdapter.onTextChangeListener() {
    @Override
    public void onTextChanged(int position, String content) {
        answerListBeanList.get(position).setContent(content);
        LogUtil.i("ContentResult","==="+position+"----"+content);
        String examQuestionId = answerListBeanList.get(position).getQuestionId();
        Intent intent = new Intent();
        intent.putExtra("answerListBeanList", (Serializable) answerListBeanList);
        intent.putExtra("examQuestionId",examQuestionId);
        intent.putExtra("num",testId);
        intent.putExtra("type", 4);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setAction(Constants.REFRESH_STUDENT_MOCK_FILL_BLANK_ANSWER_DATA);
        context.sendBroadcast(intent);
    }
});
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:42:07  更:2022-03-24 00:43:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 20:03:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码