android: Как добавить список объектов в виде списка (но не все атрибуты)?

#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. Спасибо Харуну за ваш ответ. Как вы сказали, я создал пользовательский адаптер, воспользовавшись помощью следующего сообщения: ссылка