簡體   English   中英

更改 RecyclerView 中顯示的 ArrayList Android Java

[英]Changing ArrayList shown in RecyclerView Android Java

我在 arraylist 中有多個數組列表:

[[Object1, Object2],[Object3, Object4],[Object5, Object6]]

我在 recyclerview 中顯示第一個數組列表,一次顯示一個 arraylist:

myViewHolder.bindTo(cities.get(0).get(i));

我想單擊另一個 class 中的按鈕,該按鈕將顯示更改顯示的數組列表。 我將如何實現這一目標?

回收商查看適配器 Class:

    private List<List<Country>> cities;

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        PlannerItemBinding plannerItemBinding =
                DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()), R.layout.planner_item, viewGroup, false);

        return new MyViewHolder(plannerItemBinding);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
        myViewHolder.bindTo(cities.get(0).get(i));

    }

    @Override
    public int getItemCount() {
        if (cities != null) {
            return cities.size();
        } else {
            return 0;
        }
    }

    public void setCityList(List<List<Country>> cities) {
        this.cities = cities;
        notifyDataSetChanged();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {

        private PlannerItemBinding plannerItemBinding;

        public MyViewHolder(@NonNull PlannerItemBinding plannerItemBinding) {
            super(plannerItemBinding.getRoot());

            this.plannerItemBinding = plannerItemBinding;
        }

        void bindTo(Country country) {
            plannerItemBinding.setVariable(com.example.planner.BR.city, country);
            plannerItemBinding.setVariable(com.example.planner.BR.adapterPosition, getLayoutPosition());
            plannerItemBinding.setVariable(com.example.planner.BR.countryImageMedium, country.getImages().get(0).getSizes().getMedium());
            plannerItemBinding.executePendingBindings();

        }
    }

}

在 RecyclerView.Adapter 中設置一個設置器:

public updateCities(List<List<Coutry>> cities) {
    this.cities = cities;
    notifydatasetchanged();
}

這樣您就可以使用新數據在該按鈕的 onClick() 中調用它。

這將使用傳遞的數據更新適配器的 model,並通知 recyclerview 其數據已更改。

您在您選擇的 object 上創建一個onClickListener ,然后單擊它時,您只需setCityList設置為新數據並在適配器上使用notifydatasetchanged

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM