Как я могу получить доступ к объекту (например, ArrayList) из другого класса? - PullRequest
3 голосов
/ 08 декабря 2011

Я ищу способ, который позволяет мне получить доступ к объекту из другого класса; оба класса находятся в пределах одной и той же активности Android - OpenStreeMapActivity.java. У меня есть:

ItemizedOverlay.java - содержит объект, к которому я хочу получить доступ и изменить:

private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

BalloonOverlayView.java - Где я хочу получить доступ к объекту mOverlays:

    protected void setupView(final Context context, final ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.balloon_overlay, parent);
    title = (TextView) v.findViewById(R.id.balloon_item_title);
    snippet = (TextView) v.findViewById(R.id.balloon_item_snippet);

    // Get ballon_close button and register its listener:
    ImageView close = (ImageView) v.findViewById(R.id.balloon_close);
    close.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            parent.setVisibility(GONE); 

            Intent intent = new Intent( );
            intent.setClassName( "org.example.openstreetmap", "org.example.openstreetmap.UpdateEntityActivity" );
            v.getContext().startActivity(intent);

            //HERE I return from UpdateOverlayActivity.java and is where I want to modify *mOverlays*.
        }
    });

} 

Редактировать: Я понял, что это неправда, что я возвращаюсь к // ЗДЕСЬ.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2011

В ItemizedOverlay создайте метод, который предоставляет объект.

public List<OverlayItem> getOverlays() {
  return this.mOverlays;
}

Лучше, если вы используете List, поэтому, если в будущем вы захотите изменить реализацию, это не повлияет на ваш код в другом месте.

1 голос
/ 08 декабря 2011

Вы можете заставить BalloonOverlayView хранить ссылку на список OverlayItem объекта следующим образом:

public class BalloonOverlayView{
 List<OverlayItem> items = null;
 public BalloonOverlayView(List<OverlayItem> items){
    this.items = items;
 }
 // Now you can use the ItemizedOverlay class from within this class as you wish
 public void addItem(OverlayItem item){
    items.add(item);
 }
 public void removeItem(OverlayItem item){
    item.remove(item);
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...