2017-11-10 7 views
0

사용자가 사실을 즐겨 찾기 인 다른 활동에 추가 할 수있는 기본 활동에 사실 집합을 표시하기 위해 Android 응용 프로그램을 만들려고합니다.좋은 프로그래밍 사례 공유 활동 간의 ArrayList

클래스 간의 공유/액세스에 문제가있어서 ArrayList에서 업데이트 메서드 (추가, 제거 등)를 호출 할 수 있습니다. 이 문제를 해결하기 위해 따라야 할 최선의 방법에 대해 확신하지 못합니다.

  1. 은 현재 내가 그것에 업데이트가 처리되는 곳 MainActivity.java 공공 정적 마지막으로 내 ArrayList를 선언하고 ArrayList의 다음 FavouriteActivity.java에 액세스하고에서 볼 수있는이 같은 새로운 ArrayList를 컬렉션에 할당 아래 코드. 그러나 이것은 내가 잘 알고있는 좋은 프로그래밍 실습이 아니기 때문에 여기에 제 질문이 안내를 위해 게시됩니다.

  2. 저는 Intent를 사용하여 공유/액세스 할 수 있다고 생각하지 않습니다. ArrayList는 객체를 저장하지 않습니다. 나는 비슷한 질문을 보았지만 나에게 도움이되지 못했다.

  3. MainActivity 내에서 FavouriteActivity 객체를 만들려고하여 해당 클래스 내의 ArrayList에있는 FavouriteActivity에서 addFavourite()와 같은 메서드를 호출하려고했지만이 오류가 여러 번 발생했습니다.

  4. 또한 FavouriteActivity에 대한 생성자를 고안하여 생성시 ArrayList를 허용하므로 MainActivity의 ArrayList를 통해 전달하려고했습니다. 이것은 다시 작동하지 않았으며 몇 가지 문제가 발생했습니다.

이상적으로이 모든 처리를 즐겨 찾기 목록에서 수행해야합니까? MainActivity, FavouriteActivity 또는 FavouriteAdapter 내에서?

감사합니다.

Favourite.java

이 클래스는 두 개의 필드를 가지고, 모두 ID와 텍스트를 나타내는 문자열입니다. 생성자에서 초기화되고 두 값을 반환하는 메서드를 가져옵니다.

FavouriteAdapter.java

imports omitted. 

public class FavouriteAdapter extends ArrayAdapter<Favourite> { 

    public FavouriteAdapter(Context context, ArrayList<Favourite> favourite) { 
     super(context, 0, favourite); 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, @NonNull ViewGroup parent) { 
     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.favourite_item, parent, false); 
     } 

     Favourite currentFavourite = getItem(position); 

     TextView idTextView = (TextView) convertView.findViewById(R.id.id_text_view); 
     idTextView.setText(currentFavourite.getId()); 

     TextView textTextView = (TextView) convertView.findViewById(R.id.text_text_view); 
     textTextView.setText(currentFavourite.getText()); 

     return convertView; 
    } 
} 

FavouriteActivity.java이

이 클래스는 사용하고 어댑터와의 ListView를 사용하여 ArrayList에 추가 된 사실의 컬렉션을 표시합니다.

imports omitted. 

public class FavouriteActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_favourite); 

     ArrayList<Favourite> allFavourites = MainActivity.allFavourites; 

     FavouriteAdapter favouriteAdapter = new FavouriteAdapter(FavouriteActivity.this, allFavourites); 

     ListView listView = (ListView) findViewById(R.id.list_view); 
     listView.setAdapter(favouriteAdapter); 
    } 
} 

MainActivity.java

이 사실이 표시되는 사용자에 대한 기본보기의 GUI입니다.

답변