我想在适配器和视图持有者之间创建一个接口(此视图持有者是另一个适配器的内部类),以便我可以更新文本视图(数字)。我怎么能这样做?
详细信息:
我有两个回收视图(主列表回收站视图和子列表回收站视图水平放置,如图所示),一个具有数字(作为其项目之一),另一个具有复选框(作为其项目)。
我有两个适配器FilterMainListAdapter
和FilterSubListAdapter
,视图持有者FilterMainListViewHolder
和FilterSubListViewHolder
填充字段。
如果在子列表回收站视图中选中了复选框,我希望主列表回收站视图中的相应编号能够更新。
为此,我正在使用和接口。
public interface ChangeFilterMainNumber {
void OnChangeFilterMainNumberListener(int totalCheckedNumber);
}
我在FilterSubListViewHolder
内有复选框的onClick方法,我正在尝试发送总复选框检查号码,如下所示。
changeFilterMainNumber.OnChangeFilterMainNumberListener(totalCheckedNumber);
之后,我在ChangeFilterMainNumber
FilterMainListViewHolder
接口
public class FilterMainListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,
ChangeFilterMainNumber {...}
但是如何在FilterSubListAdapter
?
changeFilterMainNumber = ???;
[如果是活动,可以在changeFilterMainNumber = (ChangeFilterMainNumber) context
的默认构造函数中定义类似FilterSubListAdapter
的界面。但是视图持有者是另一个适配器的内部类呢?]
或者除了这个之外,还有更好的方法来找到我的问题的解决方案吗?
更新:您可以在此处查看代码https://github.com/gSrikar/FilterScreen
答案 0 :(得分:0)
如果我按你的意愿实现这个功能,我会这样实现: (这就像观察者模式)
class Fragment/Activity implement OnChangeFilterMainNumberListener{
FilterMainListAdapter mainAdapter;
FilterSubListAdapter subAdapter;
void oncreate() {
mainAdapter = new FilterMainListAdapter(this);
}
@Override
void OnChangeFilterMainNumberListener(int totalCheckedNumber) {
.....
// Update data to sub list
}
}
class FilterMainListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
public interface ChangeFilterMainNumber {
void OnChangeFilterMainNumberListener(int totalCheckedNumber);
}
ChangeFilterMainNumber listener;
FilterMainListAdapter(ChangeFilterMainNumber listener) {
this.listener = listener;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null) {
listener.OnChangeFilterMainNumberListener(position)
}
}
});
}
}
class FilterSubListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
}