package carbon.dialog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.StyleRes;
import java.util.List;
import carbon.R;
import carbon.component.DataBindingComponent;
import carbon.recycler.RowFactory;
import carbon.widget.RadioButton;
import carbon.widget.RecyclerView;
public class SingleSelectDialog<Type> extends ListDialog<Type> {
private Type selectedItem;
public SingleSelectDialog(@NonNull Context context) {
super(context);
}
public SingleSelectDialog(@NonNull Context context, @StyleRes int themeResId) {
super(context, themeResId);
}
protected RecyclerView.OnItemClickedListener getInternalListener() {
return (view, item, position) -> {
RadioButton radio = (RadioButton) view.findViewById(R.id.carbon_radioButton);
radio.setChecked(true);
RadioButton prevRadio = (RadioButton) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.carbon_radioButton);
prevRadio.setChecked(false);
selectedItem = items.get(position);
if (listener != null)
listener.onItemClicked(view, item, position);
};
}
@Override
public void setItems(Type[] items, RowFactory<Type> factory) {
throw new RuntimeException("not supported");
}
@Override
public void setItems(List<Type> items, RowFactory<Type> factory) {
throw new RuntimeException("not supported");
}
public void setItems(Type[] items) {
super.setItems(items, parent -> new DataBindingComponent(parent, R.layout.carbon_row_dialog_radiotext) {
@Override
public void bind(Object data) {
super.bind(data);
if (selectedItem == data) {
RadioButton radio = (RadioButton) getView().findViewById(R.id.carbon_radioButton);
radio.setChecked(true);
}
}
});
}
public void setSelectedItem(Type selectedItem) {
this.selectedItem = selectedItem;
}
}