#java #android #listview
#java #Android #listview
Вопрос:
Я создал класс объектов EventDto
public class EventDTO {
private String eventSourceName;
private String eventTime;
private String eventReason;
private String eventName;
public String getEventSourceName() {
return eventSourceName;
}
public void setEventSourceName(String eventSourceName) {
this.eventSourceName = eventSourceName;
}
public String getEventTime() {
return eventTime;
}
public void setEventTime(String eventTime) {
this.eventTime = eventTime;
}
public String getEventReason() {
return eventReason;
}
public void setEventReason(String eventReason) {
this.eventReason = eventReason;
}
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
@Override
public String toString() {
return "EventDTO{"
", eventSourceName='" eventSourceName '''
", eventTime='" eventTime '''
", eventReason='" eventReason '''
", eventName='" eventName '''
'}';
}
}
и я создал список массивов типа EventDTO
public static ArrayList<EventDTO> eventDTOList = new ArrayList<EventDTO>();
Я добавил много событий для ссылки, как показано ниже, несколько раз.
eventDTOList.add(eventDTO);
Теперь у меня есть представление списка следующим образом
<LinearLayout
android:id="@ id/notifications_popup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="120dp"
android:orientation="vertical"
android:background="@drawable/cell_shape_gradient"
android:visibility="visible"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
>
<RelativeLayout
android:id="@ id/minimize_notifications"
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="@drawable/notification_header_shape_color"
android:clickable="true"
>
<ImageView
android:id="@ id/cancel_notification"
android:layout_width="20dp"
android:layout_height="5dp"
android:background="@drawable/cancel_notifications"
android:clickable="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/event_notification"
android:textColor="@color/white"
android:textStyle="bold"
android:gravity="center"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#fbfdfcfc"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
>
<ListView
android:id="@ id/eventList"
android:layout_width="match_parent"
android:layout_height="match_parent
android:scrollbarSize="3dp"
android:smoothScrollbar="true"
android:layout_marginRight="2dp"
android:layout_marginLeft="2dp"
android:scrollbarFadeDuration="3000"
/>
</RelativeLayout>
</LinearLayout>
Теперь при нажатии кнопки я добавляю список массивов в представление списка
final ListView listview = (ListView) findViewById(R.id.eventList);
ArrayAdapter<EventDTO> adapter = new ArrayAdapter<EventDTO>(GladiusLiveViewActivity.this, R.layout.listview_text_style, eventDTOList);
listview.setAdapter(adapter);
но в результате в него включено имя класса и все имя атрибута
Я хочу показать только следующие два атрибута
2.eventSourceName
3.Причина события
Как это сделать.
Комментарии:
1.
EventDto.toString()
исправит ли это исправление?2. где мне нужно добавить это.
3. Создайте адаптер массива с помощью 2.eventSourceName 3.eventReason, а затем установите адаптер.
4. @Haroon не могли бы вы предоставить несколько примеров кода в разделе ответов. Извините, но я новичок в Android и Java.
Ответ №1:
вам нужно переопределить EventDTO toString()
Что-то вроде этого
@Override
public String toString(){
return this.getEventSourceName() " - " this.getEventReason();
}
С уважением
Ответ №2:
Замените свой Pojo. и проверьте, помогает ли
public class EventDTO {
private String eventSourceName;
private String eventTime;
private String eventReason;
private String eventName;
public String getEventSourceName() {
return eventSourceName;
}
public void setEventSourceName(String eventSourceName) {
this.eventSourceName = eventSourceName;
}
public String getEventTime() {
return eventTime;
}
public void setEventTime(String eventTime) {
this.eventTime = eventTime;
}
public String getEventReason() {
return eventReason;
}
public void setEventReason(String eventReason) {
this.eventReason = eventReason;
}
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
@Override
public String toString() {
return "EventDTO{"
"eventSourceName='" eventSourceName '''
", eventReason='" eventReason '''
'}';
}
}
Комментарии:
1. Я получаю только два поля, но это в форме EvntDTO{eventName=’SYTEMMEMORY’,eventReason=’FULL’} мне нужна только SYTEMMEMORY: FULL
2. Спасибо Харуну за ваш ответ. Как вы сказали, я создал пользовательский адаптер, воспользовавшись помощью следующего сообщения: ссылка