Не могу разобраться как часть кода разместить в другом классе и потом получить к нему доступ.
В классе Resurs я получаю из файла string.xml данные и загружаю их в массив String[] title, так же в этом же классе создаю метод findResurs(), где загружаю в List arrImage картинки, картинок в приложении более четырехсот, здесь для примера только две
public class Resurs {
private Context context;
List<Person> persons;
public Resurs(Context context) {
Resources res = context.getResources();
// загружаю в массив
String[] title = res.getStringArray(R.array.titleString);
}
public void findResurs(){
List arrImage = new ArrayList<>();
arrImage.add(R.drawable.img1);
arrImage.add(R.drawable.img2);}
}
Затем в Активити MainActivity подключаюсь к классу
Resurs resurs = new Resurs(this);
Теперь как можно загрузить данные из Resurs в persons, другими словами получить из Resurs title и arrImage1
int length = title.length;
persons = new ArrayList<>();
for(int i = 0; i < length; i++)
persons.add(new Person(i, title[i] arrImage1.get(i)));
Класс Person
public class Person {
long id;
String title;
int photoId;
// пустой конструктор
public Person() {
}
// конструктор с переменными
public Person(long id, String title, int photoId1) {
this.id = id;
this.title = title;
this.photoId = photoId;
}}
Я бы предложил класс Resources(такое название правильнее Resurs) считать набором инструментов для загрузки данных из ресурсов, а метод получения персон реализовать статичным. Например так:
public class Resources {
public static Person[] loadPersons(Context ctx){
Resources res = context.getResources();
// загружаю в массив
String[] title = res.getStringArray(R.array.titleString);
// статичное определение списка картинок
int[] images = {R.drawable.img1, R.drawable.img2, ..., R.drawable.imgN};
if(title.lenght != images.lenght)
// количество картинок не соответствует количеству имён
throw new IllegalStateException();
Person[] persons = new Person[title.lenght];
for(int i = 0; i < persons.length; i++)
persons.add(new Person(i, title[i], images.get(i)));
return persons;
}
}
Что касается кэширования - считаю, что это нужно оставить на усмотрение вызывающего кода. Не стоит перегружать класс Resources ещё и этой ответственностью.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости