사용자가 사실을 즐겨 찾기 인 다른 활동에 추가 할 수있는 기본 활동에 사실 집합을 표시하기 위해 Android 응용 프로그램을 만들려고합니다.좋은 프로그래밍 사례 공유 활동 간의 ArrayList
클래스 간의 공유/액세스에 문제가있어서 ArrayList에서 업데이트 메서드 (추가, 제거 등)를 호출 할 수 있습니다. 이 문제를 해결하기 위해 따라야 할 최선의 방법에 대해 확신하지 못합니다.
은 현재 내가 그것에 업데이트가 처리되는 곳 MainActivity.java 공공 정적 마지막으로 내 ArrayList를 선언하고 ArrayList의 다음 FavouriteActivity.java에 액세스하고에서 볼 수있는이 같은 새로운 ArrayList를 컬렉션에 할당 아래 코드. 그러나 이것은 내가 잘 알고있는 좋은 프로그래밍 실습이 아니기 때문에 여기에 제 질문이 안내를 위해 게시됩니다.
저는 Intent를 사용하여 공유/액세스 할 수 있다고 생각하지 않습니다. ArrayList는 객체를 저장하지 않습니다. 나는 비슷한 질문을 보았지만 나에게 도움이되지 못했다.
MainActivity 내에서 FavouriteActivity 객체를 만들려고하여 해당 클래스 내의 ArrayList에있는 FavouriteActivity에서 addFavourite()와 같은 메서드를 호출하려고했지만이 오류가 여러 번 발생했습니다.
또한 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입니다.