// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.cronet_sample_apk;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class OptionsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final List<Options.Option> mOptions;
public OptionsRecyclerViewAdapter() {
this.mOptions = Options.getOptions();
}
private static class ToggleOptionViewHolder extends RecyclerView.ViewHolder {
private final TextView mOptionShortName;
private final TextView mOptionDescription;
private final Switch mOptionSwitch;
public ToggleOptionViewHolder(@NonNull View itemView) {
super(itemView);
mOptionShortName = itemView.findViewById(R.id.option_short_name);
mOptionDescription = itemView.findViewById(R.id.option_description);
mOptionSwitch = itemView.findViewById(R.id.option_switch);
}
public void setOptionShortName(String shortName) {
mOptionShortName.setText(shortName);
}
public void setOptionDescription(String optionDescriptionStr) {
mOptionDescription.setText(optionDescriptionStr);
}
public void setOptionSwitch(boolean checked) {
mOptionSwitch.setChecked(checked);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ToggleOptionViewHolder(
LayoutInflater.from(parent.getContext())
.inflate(R.layout.toggle_view, parent, false));
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ToggleOptionViewHolder toggleOptionViewHolder = (ToggleOptionViewHolder) holder;
toggleOptionViewHolder.setOptionShortName(mOptions.get(position).getShortName());
toggleOptionViewHolder.setOptionDescription(mOptions.get(position).getDescription());
toggleOptionViewHolder.setOptionSwitch(
((Options.BooleanOption) mOptions.get(position)).getValue());
toggleOptionViewHolder.mOptionSwitch.setOnClickListener(
v ->
mOptions.get(position)
.setValue(toggleOptionViewHolder.mOptionSwitch.isChecked()));
}
@Override
public int getItemCount() {
return mOptions.size();
}
}