Android - динамическое добавление вида во всплывающее диалоговое окно - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть диалог предупреждений, который показывает некоторые поля ввода текста.Когда я ввожу данные и нажимаю «ОК», он сохраняет эти данные и отображает их в настраиваемом представлении в действии, которое вызвало диалоговое окно.

Если я хочу изменить эти данные, я нажимаю на настраиваемое представление ито же самое диалоговое окно предупреждения появляется.Я хочу предварительно заполнить данные, разрешить редактирование и добавление новых данных.Однако вот где у меня возникает проблема.

Когда я пытаюсь добавить существующие данные в диалог, представления добавляются в верхнюю часть представления, а не в подпредставление, которое я хочу добавитьк.Смотрите здесь:

Populated View show be under the headings

Таким образом, диалоговое окно с предупреждением раздувает представление из моей Активности:

View dialogView = LayoutInflater.from(this).inflate(R.layout.material_add_dialog, viewGroup, false);
builder.setView(dialogView);

Но это R.layout.material_add_dialogосновной / вид сверху.

У меня есть собственный класс адаптера, который я тоже использую.Вот метод getView():

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = Objects.requireNonNull(mInflater).inflate(R.layout.add_material_popup_dialog_row, null);
    }

    Material material = mMaterials.get(position);

    EditText etMaterial = convertView.findViewById(R.id.material_add_text_material);
    EditText etSupplier = convertView.findViewById(R.id.material_add_text_supplier);
    EditText etWeight = convertView.findViewById(R.id.material_add_text_weight);
    EditText etAmount = convertView.findViewById(R.id.material_add_text_amount);

    etMaterial.setText(material.getMaterial());
    etSupplier.setText(material.getSupplier());
    etWeight.setText(material.getUnit());
    etAmount.setText(material.getAmount());

    return convertView;
}

Так что, если вы видите convertView, это надувает R.layout.add_material_popup_dialog_row, то есть строку, которая добавляется вверху.

Такна самом деле мой вопрос, как я могу добавить эту строку в подпредставление представления диалогов?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Вам просто нужно получить или создать подпредставление.Если он существует:

View dialogView = LayoutInflater.from(this).inflate(R.layout.material_add_dialog, viewGroup, false);
View subView = dialogView.findViewById(R.id.mySubViewId);

Или вы можете создать новый вид и добавить его в текущий вид:

//You would need to create the appropriate view for your use-case.
View view = new View();
dialogView.addView(view);
0 голосов
/ 27 сентября 2019

вы можете попробовать создать контейнер LinearLayout as root, затем addView(convertView) и return root

...