Я пытаюсь динамически создать некоторые выбранные компоненты микросхем на основе ArrayList of String из некоторых вычислений, и ниже приведен код для создания микросхем и добавления их в ChipGroup, созданную в XML-файле макета.
if (mChipGroup.getChildCount() == 0 ){
int i = 0;
for (Classifier.Recognition res: results){
Chip resultChip = new Chip(getDialog().getContext());
ChipDrawable chipDrawable =
ChipDrawable.createFromAttributes(
getActivity(),
null,
0,
R.style.Widget_MaterialComponents_Chip_Choice);
resultChip.setId(i++);
resultChip.setChipDrawable(chipDrawable);
resultChip.setText(res.getTitle());
mChipGroup.addView(resultChip);
}
}
Чипы отображаются правильно с текстом, но когда я пытался вызвать getText () для чипов, он всегда возвращает пустую строку, но не текст, содержащийся в чипах.Я проверил это, установив OnCheckedChangeListener в ChipGroup и сделав тост с текстом (хотя это не сработало).Когда я пытался отобразить только зарегистрированный идентификатор, он работает.
mChipGroup.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(ChipGroup group, int checkedId) {
Chip chip = group.findViewById(checkedId);
if(chip != null){
Toast.makeText(getContext(), chip.getText().toString(),Toast.LENGTH_SHORT).show();
}
}
});
Мой текущий обходной путь - иметь переменную, содержащую результаты массива, и использовать ArrayList.get(selectedChipId.getTitle())
.но не думаю, что так должно быть, хотя
Я также обнаружил, что он может получать текст из фишек, добавленных в файл макета, но не из фишек, добавленных во время выполнения.Пробовал с выпуском 1.1.0 / alpha06 и 1.1.0 / alpha07, но мне не повезло.Хотел бы получить совет, если это возможно.Большое спасибо.