#android #java
Здравствуйте! Подскажите, как лучше сделать. Есть экран LinearLayout, внутри него еще LinearLayout, и в нём TextView. По сути:и тд. С сервера приходят данные, и некоторым поля присваивается значение null, соответственно, отображать на экране не стоит, и нужно спрятать не сам TextView, а контейнер. Как сделать, чтобы не приходилось очень много кода вручную писать? Мой код String type = types.getType(); Long value = values.getValues(); AQuery aq = new AQuery(rootView);//библиотека чтобы кода меньше было aq.id(R.id.tv_type).text(type); // это вместо findViewById и setText type!= null ? type: ""); И теперь, инициализируем контейнер ll_type = (LinearLayout) rootView.findViewById(R.id.ll_type); if (type==null) ll_type.setVisibility(View.INVISIBLE); Одно поле отобразили.
Ответы
Ответ 1
В таких случаях неплохой вариант динамически добавлять элементы в зависимости от данных, которые приехали с сервера. Например, у нас есть некий ArrayList templates, содержащий произвольное количество объектов с данными, и есть mainLayout, куда надо добавить ваши LinearLayout с TextView. Тогда в активити можно сделать так: int listSize = templatesList.size(); LayoutInflater vi = getLayoutInflater(); for (int i = 0; i < listSize; ++i) { final Template template = templates.get(i); final View view = vi.inflate(R.layout.item, null); mainLayout.addView(view); TextView tvTitle = (TextView) view.findViewById(R.id.tvTitle); tvTitle.setText(template.getTitle()); } Сам же файл R.layout.item - это отдельный xml файл, содержащий ваш LinearLayout с TextView. Это если данные однотипные. Если же нет, то надо смотреть уже на сами данные, каким образом можно развести их по типам.
Комментариев нет:
Отправить комментарий