如何在RecyclerView中包含的viewPager中更改视图的值?

时间:2019-05-13 02:39:04

标签: android android-viewpager

当前,我尝试在recyclerView的viewpager中更改视图的值。

我无法通过标签找到任何视图。所有返回值均为空。尽管我可以在CustomViewPagerAdapter中更改instantiateItem中的值。

在viewpager中,每个视图都有4个XML文件。另外,RecyclerView的行XML的内部只有一个ViewPager。

  1. 尝试在InstantiateItem上使用setTag,并在 onBindViewHolder 上使用viewPager.findViewWithTag。 ViewPager捍卫并在 onCreateViewHolder 中对齐。但它返回null(找不到视图)

  2. 试图在InstantiateItem方法中设置TextView。并调整onBindViewHolder类型的值,例如“(((CustomViewPagerAdapter)viewPager.getAdapter())。textview.setText(someValue)”,但textView为null。即使我可以在InstantiateItem方法的内部调整值。

  3. 尝试在onBindViewHolder中调用InstantiateItem,例如viewHolder.viewPager.getAdapter()。instantiateItem()以获取textView参考。这样,我可以为findViewById调用find textView,也可以调用setText。但是价值观没有改变。严重的是,不知道出了什么问题。

  4. 尝试从onBindViewHolder中的CustomViewPagerAdapter中将值更改为 custom Set方法,例如UpdateString(String string)。为此,我在CustomViewPagerAdapter中定义了一个textView变量,如下所示。

@Override
    public Object instantiateItem(ViewGroup collection, int position) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        ViewGroup layout = (ViewGroup) inflater.inflate(modelObject.getLayoutResId(), collection, false);
        collection.addView(layout);

        if(position == 3)
        {
            mTextView = layout.findViewById(R.id.textView);
        }

    public void UpdateString(String string)
    {
         if(mTextView != null)
         {
            mTextView.setText("some text");
         }
    }

但是当我尝试从上述自定义设置方法更改值时,mTextView仍然为null。即使在 instantiateItem 中不为空。

我在CustomViewPagerAdapter中的InstantiateItem方法

LayoutInflater inflater = LayoutInflater.from(mContext);
ViewGroup layout = (ViewGroup) inflater.inflate(LayoutId, collection, false);
        collection.addView(layout);

        layout.setTag(LayoutId);

return layout

我的onBindViewHolder

        CustomPagerAdapter adapter = new CustomPagerAdapter(mContext);

        clipViewHolder.myPager.setAdapter(adapter);

        if(stateArray.get(position) > 0 && stateArray.get(position) <= 4)
        {
            clipViewHolder.myPager.setCurrentItem(stateArray.get(position) - 1);
        }
        else
        {
            clipViewHolder.myPager.setCurrentItem(3, true);
            stateArray.append(position, clipViewHolder.myPager.getCurrentItem() + 1);
        }

我想在onBindViewHolder方法的viewPager中更改特定视图中的值。

0 个答案:

没有答案