Android: Sacar datos de un ArrayLIst de Objetos

Tengo un problema al sacar datos de un ArrayList de Objectos. Este es mi objeto

public class ImageData {
    private int id;
    private String name;
    private Bitmap bitmap;
    private String path;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Bitmap getBitmap() {
        return bitmap;
    }

    public void setBitmap(Bitmap bitmap) {
        this.bitmap = bitmap;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }
}

Despues en otro Objeto tengo un ArrayList de este objeto

public class CheckIn {
    private int folio;
    private String customer;
    private String delivered;
    private ArrayList<ImageData> images;
//    private ArrayList<String> imagePath;

    private static CheckIn instanceCheckIn;

    private CheckIn(){
    }//constructor

    public static CheckIn getInstance() {

        if (instanceCheckIn == null)
            instanceCheckIn = new CheckIn();

        return instanceCheckIn;
    }

    public int getFolio() {
        return folio;
    }

    public void setFolio(int folio) {
        this.folio = folio;
    }

    public String getCustomer() {
        return customer;
    }

    public void setCustomer(String customer) {
        this.customer = customer;
    }

    public String getDelivered() {
        return delivered;
    }

    public void setDelivered(String delivered) {
        this.delivered = delivered;
    }

    public ArrayList<ImageData> getImages() {
        return images;
    }

    public void setImages(ArrayList<ImageData> imageDatasArray) {
        this.images = imageDatasArray;
    }
}

Pero lo que quiero hacer es sacar unicamente los Bitmaps del ArrayList porque despues los voy a poner a un ImageView

4
задан 19.12.2016, 18:22
4 ответа

В твоем классе ImageData ты считаешь уже сделанными get и set из каждой Ваших свойств. Следовательно, чтобы получать Вашу стоимость, было бы достаточно обращаться просто будь готова, и призывать в Ваш mГ©todo get манипулировать этим и идти они будучи даны твоим ImageView:

CheckIn checkin = new CheckIn();
for (ImageData object: checkin.getImages()) {
    //Aqui manipulas el valor y los vas seteando a tus imagenes
    object.getBitmap();
}
2
ответ дан 24.11.2019, 11:59
  • 1
    Привет sioesi, у меня есть сомнение, которое значат две точки (:) в for? –  Javier fr 19.12.2016, 18:31
  • 2
    @Javierfr это enhanced for . В этой pá gina, ищи класс EnhancedForDemo –   19.12.2016, 18:32
  • 3
    @Javierfr этот также известен как FOR EACH, определяется тип информации (в этом случае ImageData) ему распределяется имя в эту переменную (в этом случае object) и ему говорится, откуда он происходит, этот объект, который ДОЛЖЕН быть списком (в этом случае Арраилист де Имахедата) следовательно object будет инстанцией ImageData внутри списка –  sioesi 19.12.2016, 18:34

Так как ты был бы должен брать список ImageData твоего объекта CheckIn и пробегать ее получая все bitmaps и сохраняя их в списке. Оно было бы чем-то как код, который я помещаю тебе далее:

CheckIn c;
ArrayList<Bitmap> bitmaps = new ArrayList();

for( ImageData img : c.getImages()){
     bitmaps.add(img.getBitmap());
}
2
ответ дан 24.11.2019, 11:59

Другой способ это делать, если ты используешь java 8, - с выражениями lambda

checking.getImages().forEach( o -> {
   // acá manipulas el objeto "o" 
});

, Если то, что он хочет, состоит в том, чтобы доставать BitMap serГ - что-то из-за стиля:

List<BitMap> bitMaps = new ArrayList<>();

checking.getImages().forEach( o -> bitMaps.add(o.getBitMap());
2
ответ дан 24.11.2019, 11:59
  • 1
    Cool, Создал, что уже deberí хозяева использовать это " выражения lambda" –  Jorgesys♦ 19.12.2016, 18:49
  • 2
    Если :) отдельно, у которого есть много функциональности, улучшает много результат, так как могут быть использованными streams параллелей. –  esteban rincon 19.12.2016, 18:53
  • 3
    !! это не увидел:0!! Дружелюбные +1 я увижу, что такое это –  sioesi 19.12.2016, 18:54
  • 4
    Я думаю, что уже могут: developer.android.com/guide/platform/j8-jack.html –  esteban rincon 19.12.2016, 18:56
  • 5
    Это зависит от от, использовались ли они paralelStreams, но для того, чего он требует é sta вопрос мне не кажется, что он это был. –  esteban rincon 19.12.2016, 18:58

В обоих объектах у тебя есть методы так сохранять imagene/imagenes как чтобы получать изображение / изображение, объект ImageData может хранить изображение, в то время как CheckIn, хранит список изображений.

Объект ImageData :

//Obtiene imagen
public Bitmap getBitmap() {
    return bitmap;
}
//Guarda imagen
public void setBitmap(Bitmap bitmap) {
    this.bitmap = bitmap;
}

Объект CheckIn:

//Obtiene lista de imagenes.
public ArrayList<ImageData> getImages() {
    return images;
}

//Guarda lista imagenes.
public void setImages(ArrayList<ImageData> imageDatasArray) {
    this.images = imageDatasArray;
}

Следовательно чтобы получать изображение списка изображений и эта добавлять ее к ImageView, ты реализуешь следующее:

//Instancias la clase CheckIn
CheckIn checkin = new CheckIn();
//Obtienes un arrayList que obtiene el listado de imagenes.
ArrayList<ImageData> listaImagenes =  checkin.getImages();

Bitmap bitmap;
for (ImageData image: listaImagenes )) {
    //Obtiene imagenes
    bitmap = image.getBitmap();
}

Также ты мог бы получать bitmap в ArrayList в зависимости от индекса в списке, например второй элемент (индекс 1):

Bitmap bitmap = listaImagenes.get(1);

получив Bitmap ты можешь использовать метод setImageBitmap, чтобы добавлять изображение к твоему ImageView:

myImageView.setImageBitmap(bitmap);
2
ответ дан 24.11.2019, 11:59
  • 1
    Elenasys консультация, потому что создавать другой ArrayList, когда get класса уже возвращает один? –  sioesi 19.12.2016, 19:17
  • 2
    В какой части создан другой ArrayList? этот получается checkin.getImages (); –  Jorgesys♦ 19.12.2016, 19:18
  • 3
    ArrayList< ImageData> listaImagenes = checkin.getImages ();? –  sioesi 19.12.2016, 19:19
  • 4
    Спасибо Elenasys –  Javier fr 19.12.2016, 19:23
  • 5
    ahh, так как он состоит в том, чтобы создавать переменную, которая содержала бы изображения (listaImagenes), если ты хочешь прочитать прямо элементы просто, они получаются в for (ImageData image: checkin.getImages ()) { но это то же самое for (ImageData image: listaImagenes) { это то же самое но считая вопрос OP я думаю лично, что он может разбираться лучше в этой форме –  Jorgesys♦ 19.12.2016, 19:23

Теги

Похожие вопросы