Android RecyclerView.Adapter 未更新

问题描述 投票:0回答:0

我有我的 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();
    }
}

我尝试了代码中的每一种更改,但当我尝试从课堂外更新时,它只是不起作用。

java android android-recyclerview android-adapter android-viewholder
© www.soinside.com 2019 - 2024. All rights reserved.