Я делаю приложение, похожее на 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);
}
Спасибо
@ Генри, они предназначены для размещения нескольких карт? Я только что посмотрел, но все еще не уверен, как создать это исключительно с помощью java. Не могли бы вы привести пример, пожалуйста? Извините, я совсем новичок в этом пространстве
Что такое базовый макет? И какой атрибут CardView вы хотите изменить.
Я использую вертикальную линейную компоновку. На данный момент в моем CardView есть два TextView. Однако они отображаются друг над другом. Я хотел бы разделить их по горизонтали с одним TextView над другим
Вы говорите «изменение текста xml», а затем говорите «создайте эти CardViews». Вы можете использовать TextView напрямую, вам не нужен CardView для отображения текста. Чтобы уточнить, что у CardView нет текстового атрибута, вы помещаете TextView внутрь, если хотите отобразить текст.
Я не понимаю, зачем генерировать представление с помощью Java. С RecyclerView вы должны создать одно представление, которое используется каждым элементом (т.е. отдельными карточками). RecyclerView отвечает за создание необходимого количества экземпляров.




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