2016-03-17 2 views
0

У меня есть класс CameraView (с onPreviewFrame), который на каждом входящем кадре вычисляет значение 1 или 0, зависит от яркости кадра, я хочу, чтобы на каждом входящем кадре вычисляемое значение было добавлено в ArrayList. Проблема начинается, когда мне нужно прочитать данные, находящиеся в ArrayList, из моего класса MainActivity.Как создать ArrayList, доступный для разных классов в android?

Как создать список, к которому может присоединиться другой класс?

Я знаю, что это относительно просто, но я новичок в java/android и пытаюсь обвести вокруг себя все, что работает.

+0

Вы хотите, чтобы иметь возможность отправлять Arraylist из одного класса в другой, не так ли? Какой редактор вы используете? – Trey50Daniel

+0

@ Trey50Daniel ye, это в основном это, и я использую Android Studio. – Voly

+0

Использовать singleton .. – Ozgur

ответ

0

Вот пример того, что я в последнее время используется, когда мне нужно отправить HashMap от одного вида деятельности к другому:

Intent i = new Intent(getApplicationContext(), BillPage.class); 
i.putExtra("workPriceMap", (HashMap<String, Float>)workPriceMap); 
startActivity(i); 

И тогда в моем другом классе я использовал это:

private Map<String, Float> workPriceMap; 
workPriceMap=(HashMap<String,Float>intent.getSerializableExtra("workPriceMap"); 
0

Вы можете создать одноэлементный класс, например, ниже:

public class Singleton { 

    private static Singleton instance; 

    private List<String> frameList; 

    private Singleton() { 
     this.frameList = new ArrayList<String>(); 
    } 

    public static Singleton() { 
     if(instance == null) 
      instance = new Singleton(); 

     return instance; 
    } 

    public List<String> getList() { 
     return this.frameList; 
    } 

    public void setList(List<String> frameList) { 
     this.frameList = frameList; 
    } 

} 

После этого вы можете получить к нему доступ из любого класса:

Singleton.getInstance().getList().add("x"); 
+1

Это лучше, чем наличие статического списка. – Trey50Daniel

0

Вы можете использовать однотонный метод, таким образом, вы можете иметь одинаковую ссылку везде.

public class YourClass { 

    private ArrayList<String> yourList; 
    private YourClass instance; 

    private YourClass(){ 
     yourList = new ArrayList<>(); 

    } 
    public static YourClass getInstance(){ 
     if(instance == null){ 
      instance = new YourClass(); 
     } 
     return instance; 
    } 

    public ArrayList<String> getYourList(){ 
     return this.yourList; 
    } 

} 

public class OtherClass{ 
    public static void main(String [] args){ 
     ArrayList<String> yourList = YourClass.getInstance().getYourList(); 
    } 
}