我有我的 RecycletView.Adapter,它有一个 ArrayList 类型的字段来设置我的持有人(内部类)。 如果我尝试通过设置 ArrayList 和 notifyDataSetChanged() 从 Adapter 类本身(在我的示例中为 OtherAdapter)更新我的 Adapter,它会完美运行。 当我尝试从另一个类(在我的例子中是另一个适配器,但它不重要)的适配器(以完全相同的方式)更新它时,问题就出现了,它不会工作。
我试着不直接从另一个类调用 setter,通过另一个方法,但是尽管函数调用工作正常,但无论如何它都不会工作。
不工作的班级是:
public class TavoliAdapter extends RecyclerView.Adapter<TavoliAdapter.TavoliHolder>{
private OtherAdapter theOtherAdapter;
@NonNull
@Override
public TavoliAdapter.TavoliHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.fragment_tavolo, parent, false);
return new TavoliAdapter.TavoliHolder(v);
}
@Override
public void onBindViewHolder(@NonNull TavoliAdapter.TavoliHolder holder, int position) {
holder.txtIdTavolo.setText(Integer.toString(tavoli.get(position).getIdTavolo()));
holder.txtPosti.setText(Integer.toString(tavoli.get(position).getPosti()));
holder.txtIdTavolo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
theOtherAdapter.setArrayList(new ArrayList<Stuff>());
}
});
//TavoliHolder is defined down here, skipping this part
}
要换的班级是:
public class TavoliAdapter extends RecyclerView.Adapter<TavoliAdapter.TavoliHolder>{
private ArrayList<Stuff> list;
//Other stuff and HoldeClass of course
public void setArrayList(ArrayList<Stuff> list){
this.list = list;
notifyDataSetChanged();
}
}
我尝试了代码中的每一种更改,但当我尝试从课堂外更新时,它只是不起作用。