Удаление полного объекта из значения - PullRequest
0 голосов
/ 07 марта 2019

Класс помощника

public class HomeScreenChatsHelper implements Comparable  {

private String ID;
private String Name;
private String Image;
private String From;
private String Seen;
private String LastMessage;
private String LastMessageTime;

public HomeScreenChatsHelper(){
}


public HomeScreenChatsHelper(String id, String name, String image, String from, String seen, String lastmessage, String lastMessageTime) {
    this.ID=id;
    this.Name = name;
    this.Image = image;
    this.From = from;
    this.Seen = seen;
    this.LastMessage = lastmessage;
    this.LastMessageTime = lastMessageTime;
}

public String getID() {
    return ID;
}

public void setID(String id) {
    ID = id;
}

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getImage() {
    return Image;
}

public void setImage(String image) {
    Image = image;
}

public String getMessage() {
    return LastMessage;
}

public void setMessage(String message) {
    LastMessage = message;
}

public String getTime() {
    return LastMessageTime;
}

public void setTime(String time) {
    LastMessageTime = time;
}

public String getFrom() {
    return From;
}

public void setFrom(String from) {
    From = from;
}

public String getSeen() {
    return Seen;
}

public void setSeen(String seen) {
    Seen = seen;
}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public int compareTo(Object comparestu) {
    long compareage= Long.parseLong(((HomeScreenChatsHelper)comparestu).getTime());

    long a = Long.parseLong(LastMessageTime);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

    }
    return Long.compare(a,compareage);
}

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof HomeScreenChatsHelper)) return false;

    HomeScreenChatsHelper that = (HomeScreenChatsHelper) o;

    return getID().equals(that.getID());
}

@Override
public int hashCode() {
    return getID().hashCode();
}

активность

          for(HomeScreenChatsHelper str : mChats) {
                if (str.getID().equals(ID)) {
                    mChats.remove(ID);
                    break;
                }
            }

Существует множество учебных пособий о том, как это сделать, и я провел последнюю неделю в поисках решения, а у меня до сих пор его нет. Есть ли в любом случае я могу удалить весь объект, просто указав только идентификатор? У меня не будет значений всех других полей, поэтому я просто хочу удалить конкретный объект по его идентификатору. Также я не могу использовать опцию очистки, потому что мне нужны другие данные. Так может кто-нибудь помочь мне, пожалуйста?

С настоящим кодом ничего не происходит. Нет ошибок, но не работает

Ответы [ 3 ]

0 голосов
/ 07 марта 2019

Ваш вопрос совершенно неясен. mChats это список, содержащий HomeScreenChatsHelper объектов? Я так полагаю. Если это так, то вы можете изменить свой цикл foreach на обычный цикл

//Assuming mChats is List e.g ArrayList
for (int i = 0; mChats.size(); i++){
            if (mChats.get(i).getID().equals(ID)) {
                mChats.remove(i);
                break;
            }
        }
0 голосов
/ 07 марта 2019

Самый простой способ в Java 8 или новее - с Collection#removeIf:

mChats.removeIf(str -> str.getID().equals(ID));

Кстати, в Java принято, чтобы поля начинались со строчной буквы.

0 голосов
/ 07 марта 2019

Используя java-8, вы можете отфильтровать список, результатом будет List<HomeScreenChatsHelper>, который имеет HomeScreenChatsHelper с тем же id

List<HomeScreenChatsHelper> mChats = new ArrayList<>();

//filter
List<HomeScreenChatsHelper> result = mChats.stream()
                                     .filter(str->!str.getId().equals(Id)).
                                      .collect(Collectors.toList());

Или с помощью Iterator

// Iterator.remove() 
    Iterator itr = mChats.iterator(); 
    while (itr.hasNext()) 
    { 
        HomeScreenChatsHelper x = itr.next(); 
        if (x.getId().equals(Id))  }
            itr.remove(); 
           }
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...