我有两个RecyclerViews。RecyclerView A和RecyclerView B。RecyclerView A的每一项都包含RecyclerView B和一个TextView。也就是说,RecyclerView B是RecyclerView A的子节点。
如何在按下RecyclerView B的每个项目时更新RecyclerView A中的TextView的值。TextView属于RecyclerView A的项目。

发布于 2018-02-19 18:26:31
你必须在RecuclerView A的onBindViewHolder中对RecyclerView B进行充气,只有在那里你才能传递那个特定的RecyclerViewA的子级在RecyclerView B的适配器中的位置。我假设您可以访问RecyclerView A的LayoutManager和RecyclerView实例。
RecyclerViewA的onBindViewHolder:
@Override
public void onBindViewHolder(final ViewHolder holder, int positionInRecyclerViewA) {
RecyclerViewAdapterB adapterB = new RecyclerViewAdapterB(positionInRecyclerViewA);
holder.recyclerViewB.setAdapter(adapterB);
}回收视图B的onBindViewHolder:
@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");
}
}同时更新你的列表,这样下次你滚动的时候,它就会有最新的数据。
发布于 2018-02-19 18:09:34
使用这个..在recyclerView2适配器中..并声明..public static RecyclerViewAdapterOne reyclerViewAdapOne = ...;在recylerView 2适配器的activity和onClick() of按钮中使用Activity.reyclerViewAdapOne.updateValue(newText);,并在RecyclerViewAdapterOne中添加此函数。。
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();
}发布于 2018-02-19 18:18:46
在您的activity/fragment或任何您喜欢的单击listener上接收按钮单击。更改保存文本的资源(通常在您设置给适配器的数据集内,每个项目都应该知道要显示哪个文本)。在RecyclerView A上调用notifyDataSetChanged()。
https://stackoverflow.com/questions/48863562
复制相似问题