我正在嘗試創建一個Android應用程序,以便在主活動中顯示一組事件,其中用戶可以將事實添加到正在收藏的其他活動。良好的編程習慣在活動之間共享ArrayList
我遇到了在類之間共享/訪問ArrayList的問題,因此我可以在ArrayList上調用更新方法(添加,刪除等)。我也不確定要解決這個問題需要遵循的最佳做法。
目前我已經說過我是ArrayList中作爲MainActivity.java公共靜態最終在那裏就可以了更新處理,則此ArrayList是FavouriteActivity.java訪問並分配到一個新的ArrayList集合那裏,可以看出下面的代碼。然而,這是不好的編程實踐,我知道,因此我的問題被張貼在這裏作爲指導。
我不認爲我可以使用Intent來共享/訪問它,因爲ArrayList存儲的對象不是。我看到過一個類似的問題,但是它對我沒有幫助。
我試圖在MainActivity中創建一個FavouriteActivity對象,從而在該類的ArrayList中從FavouriteActivity調用諸如addFavourite()的方法,但遇到了幾個錯誤。
我也嘗試爲FavouriteActivity設計一個構造函數,它在創建時接受ArrayList,從而通過MainActivity傳遞ArrayList。這再次沒有奏效,遇到了幾個問題。
理想情況下,應該在收藏夾列表中執行所有這些處理?在MainActivity中,FavouriteActivity或FavouriteAdapter?
謝謝大家。
Favourite.java
這個類有兩個字段,都是字符串來表示一個ID和一些文本。在構造函數和兩個get方法中初始化以返回它們的值。
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。