Как создать карточку с определенным макетом, используя только Java (Android Studio)

Я делаю приложение, похожее на facebook, где у меня есть лента новостей, в которой отображаются все сообщения. Однако количество сообщений в этой ленте зависит от каждого пользователя, в зависимости от количества его друзей и количества опубликованных сообщений. Я хочу создать CardView для каждого элемента сообщения, в котором будет отображаться имя пользователя, опубликовавшего его, время его публикации и само фактическое сообщение. Макет будет разделен по горизонтали один раз: сообщение в нижней половине и имя человека со временем его публикации в верхней половине.

В настоящее время я могу найти способы сделать это только путем изменения текста xml, но я хочу создавать эти CardViews по мере необходимости в моем коде Java.

Я знаю, что могу изменить TextViews, используя такие функции, как setText() и setTextSize(). Есть ли способ использовать аналогичные функции в CardView, которые могут изменить базовый макет.

for (DataSnapshot snapshot : dataSnapshot.getChildren()) {

   CardView TVcard = new CardView(Home.this);

   TextView TVposts = new TextView(Home.this);
   TextView test = new TextView(Home.this);

   TVcard.addView(TVposts);
   TVcard.addView(test);

   test.setText("test");
   test.setBackgroundColor(Color.GREEN);


   TVposts.setText(snapshot.getValue().toString());
   TVposts.setTextColor(Color.WHITE);
   TVposts.setTextSize(25);
   TVposts.setBackgroundColor(Color.BLACK);
   TVposts.setHeight(200);

   linearLayout.addView(TVcard);
   LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) TVcard.getLayoutParams();
   params.setMargins(0, 20, 0, 0);
   TVcard.setLayoutParams(params);
}

Спасибо

Это звучит неправильно. Почитайте о RecyclerView (или ListView).

Henry 11.03.2019 13:04

@ Генри, они предназначены для размещения нескольких карт? Я только что посмотрел, но все еще не уверен, как создать это исключительно с помощью java. Не могли бы вы привести пример, пожалуйста? Извините, я совсем новичок в этом пространстве

Jedd Hopkins 11.03.2019 13:10

Что такое базовый макет? И какой атрибут CardView вы хотите изменить.

Guy Luz 11.03.2019 13:11

Я использую вертикальную линейную компоновку. На данный момент в моем CardView есть два TextView. Однако они отображаются друг над другом. Я хотел бы разделить их по горизонтали с одним TextView над другим

Jedd Hopkins 11.03.2019 13:14

Вы говорите «изменение текста xml», а затем говорите «создайте эти CardViews». Вы можете использовать TextView напрямую, вам не нужен CardView для отображения текста. Чтобы уточнить, что у CardView нет текстового атрибута, вы помещаете TextView внутрь, если хотите отобразить текст.

Guy Luz 11.03.2019 13:14

Я не понимаю, зачем генерировать представление с помощью Java. С RecyclerView вы должны создать одно представление, которое используется каждым элементом (т.е. отдельными карточками). RecyclerView отвечает за создание необходимого количества экземпляров.

Henry 11.03.2019 13:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
357
0

Другие вопросы по теме