您好我正在尝试使用以下代码在特定位置获取recyclerview Viewholder:

  val viewHolder = educationRv.findViewHolderForAdapterPosition(i) as SectionsRecyclerAdapter.ViewHolder


问题是,回收站视图回收了不可见的物品,如果它不可见,我将无法获得物品和位置0。我在问我尝试过这个解决方案之前进行了搜索,但是无法阻止视图的回收(我知道这不是一个好的解决方案,但是我被卡住了,无法更好地解决问题):

  educationRv.recycledViewPool.setMaxRecycledViews(1,0)

  override fun getItemViewType(position: Int): Int {
        return 1
  }

  override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        if (holder != null) {
            holder.setIsRecyclable(false)
   }


通用->我有带有20个可动态添加的edittexts的recyclerview,可以动态添加,当用户单击“保存”时,我需要获取所有edittexts值并将其保存到数组,单击按钮“ Save”时出现问题,当我尝试时只有两个或三个视图可见变得不可见返回null

最佳答案

当我收到您的查询时,此解决方案肯定会为您提供帮助

在您看来Holder会这样

etText.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) {
            yourEditTextList.set(getAdapterPosition(), s.toString());
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

    btnAddNewEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            yourEditTextList.add(new String(""));
            notifyDataSetChanged();
        }
    });


在这里,yourEditTextList是recylerView中editText的String列表。

在您有recylerView的活动中

btnDone.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Fetch you list that your have passed on recycler view you will get here
        }
    });

07-24 09:45
查看更多