Я сохраняю список ArrayList в Sharedpreferences. Но я хочу установить свою пользовательскую модель в ArrayList в адаптере, чтобы получить элементы с помощью геттера. Мне действительно надоело слишком много решений от stackoverflow, но я не мог этого сделать.
private ArrayList<String> fullList = new ArrayList<>();
к
private ArrayList<MyCustom> fullList = new ArrayList<>();
Мой индивидуальный класс:
public class InstagramUserSummary implements Serializable {
public boolean is_verified;
public String profile_pic_id;
public boolean is_favorite;
public boolean is_private;
public String username;
public long pk;
public String profile_pic_url;
public boolean has_anonymous_profile_picture;
public String full_name;
@Override
public int hashCode() {
return Objects.hash(username, pk);
}
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (!(obj instanceof InstagramUserSummary)) {
return false;
}
InstagramUserSummary user = (InstagramUserSummary) obj;
return pk == user.getPk();
}}
Список выглядит так:
[InstagramUserSummary(super=dev.niekirk.com.instagram4android.requests.payload.InstagramUserSummary@a4acf205, is_verified=false, profile_pic_id=1773528799482591987_1654599017, is_favorite=false, is_private=false, username=ququletta, pk=1654599017, profile_pic_url=https://instagram.fada1-5.fna.fbcdn.net/vp/8d99014623ed527e52512a20002d884b/5C387E45/t51.2885-19/s150x150/31203725_200759604054857_5778864946146181120_n.jpg, has_anonymous_profile_picture=false, full_name=Ququletta)]
Спасибо.
что такое MyCustom?
Пожалуйста, поделитесь кодом класса модели MyCustom.
Здравствуй. Я поделился извинениями за это.
Итак, вы хотите получить список имен пользователей?
Да, но я не могу.
В качестве примечания: в вашем случае я бы использовал ListAdapter.
В вашем классе адаптера будет много модификаций
Пожалуйста, вставьте свой класс Activity / Fragment, из которого вызывается адаптер.




Решение:
Предположим, у вас есть строковая переменная в классе MyCustom, например:
public class MyCustom {
private String strName;
public MyCustom(String name) {
this.strName = name;
}
public void setName(String name) {
this.strName = name;
}
public String getName() {
return this.strName;
}
}
тогда вы можете сделать что-то вроде этого:
for (MyCustom value : fullList) {
customFullList.add(new MyCustom(value))
}
Надеюсь, поможет.
Можете ли вы еще раз проверить мой собственный класс, пожалуйста
@Nina Ваш настраиваемый класс имеет много переменных разных типов данных, но в вашем вопросе говорится, что нужно преобразовать только String ArrayList в Custom arrayylist, что можно сделать только в том случае, если в вашем настраиваемом классе есть только строковая переменная. Надеюсь, вы уловили мою точку зрения.
@Nina Пожалуйста, проголосуйте и за это, так как это может помочь другим .. Спасибо;)
Прежде всего, нет необходимости, чтобы поле username было публичным членом класса MyCustom. Поскольку вы открываете доступ к полю через геттеры / сеттеры, делать его общедоступным - неправильно.
Помимо этого, вы можете легко использовать потоки и функцию сопоставления для создания нового экземпляра MyCustom из Stream of String.
Чтобы избежать шаблонного кода, я бы создал статический метод создателя в MyCustom следующим образом:
public class MyCustom {
private String userName;
public String getUserName() { return userName; }
public void setUserName(String userName) { this.userName = userName; }
public static MyCustom from(final String userName) {
MyCustom custom = new MyCustom();
custom.setUserName(userName);
return custom;
}
}
А затем я бы использовал это как ссылку на метод для преобразования Strings в MyCustoms, таким образом, собирая их в новый список, подобный этому:
List<String> list = new ArrayList<>();
List<MyCustom> customs = list.stream()
.map(MyCustom::from)
.collect(Collectors.toList());
Наконец, также избегайте инициализации списков с использованием конкретного типа (например, ArrayList<String> someList = new ArrayList<>;'. Намного лучше кодировать интерфейсы, делая что-то вроде List<String> someList = new ArrayList<>.
поделитесь своим классом
MyCustomс вопросом