首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子RecyclerView更新父RecyclerView中的值

从子RecyclerView更新父RecyclerView中的值
EN

Stack Overflow用户
提问于 2018-02-19 17:59:08
回答 5查看 1.4K关注 0票数 1

我有两个RecyclerViews。RecyclerView A和RecyclerView B。RecyclerView A的每一项都包含RecyclerView B和一个TextView。也就是说,RecyclerView B是RecyclerView A的子节点。

如何在按下RecyclerView B的每个项目时更新RecyclerView A中的TextView的值。TextView属于RecyclerView A的项目。

EN

回答 5

Stack Overflow用户

发布于 2018-02-19 18:26:31

你必须在RecuclerView A的onBindViewHolder中对RecyclerView B进行充气,只有在那里你才能传递那个特定的RecyclerViewA的子级在RecyclerView B的适配器中的位置。我假设您可以访问RecyclerView A的LayoutManager和RecyclerView实例。

RecyclerViewA的onBindViewHolder:

代码语言:javascript
复制
@Override
public void onBindViewHolder(final ViewHolder holder, int positionInRecyclerViewA) {
    RecyclerViewAdapterB adapterB = new RecyclerViewAdapterB(positionInRecyclerViewA);
    holder.recyclerViewB.setAdapter(adapterB);
}

回收视图B的onBindViewHolder:

代码语言:javascript
复制
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
    holder.button.setOnClickListener(new OnClickListener(){
        public void onClick(View view) {
            onButtonClick();
        }
    }
}
private void onButtonClick() {
    if (positionInRecyclerViewA >= linearLayoutManagerA.findFirstVisibleItemPosition() &&
            positionInRecyclerViewA <= linearLayoutManagerA.findLastVisibleItemPosition()) {
        Adapter.ViewHolder holder = (Adapter.ViewHolder) recyclerViewA
                .findViewHolderForAdapterPosition(positionInRecyclerViewA);
        holder.textView.setText("text");
    }
}

同时更新你的列表,这样下次你滚动的时候,它就会有最新的数据。

票数 1
EN

Stack Overflow用户

发布于 2018-02-19 18:09:34

使用这个..在recyclerView2适配器中..并声明..public static RecyclerViewAdapterOne reyclerViewAdapOne = ...;在recylerView 2适配器的activity和onClick() of按钮中使用Activity.reyclerViewAdapOne.updateValue(newText);,并在RecyclerViewAdapterOne中添加此函数。。

代码语言:javascript
复制
updateValue(String newText) //updating the recycler adapter of recyclerview one

  { 
    this.list.set( your_index, newText); // i assume this is a generic string list
    this.notifyDataSetChanged();

    }
票数 0
EN

Stack Overflow用户

发布于 2018-02-19 18:18:46

在您的activity/fragment或任何您喜欢的单击listener上接收按钮单击。更改保存文本的资源(通常在您设置给适配器的数据集内,每个项目都应该知道要显示哪个文本)。在RecyclerView A上调用notifyDataSetChanged()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48863562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档