Java 在活动之间共享ArrayList的良好编程实践
我正在尝试创建一个Android应用程序,在主活动中显示一组事实,用户可以将事实添加到另一个最喜欢的活动中 我在类之间共享/访问ArrayList时遇到问题,因此我可以调用ArrayList上的更新方法(添加、删除等)。我也不确定解决这个问题的最佳做法Java 在活动之间共享ArrayList的良好编程实践,java,android,android-activity,arraylist,android-adapter,Java,Android,Android Activity,Arraylist,Android Adapter,我正在尝试创建一个Android应用程序,在主活动中显示一组事实,用户可以将事实添加到另一个最喜欢的活动中 我在类之间共享/访问ArrayList时遇到问题,因此我可以调用ArrayList上的更新方法(添加、删除等)。我也不确定解决这个问题的最佳做法 目前,我已在MainActivity.java中将我的ArrayList声明为public static final,并在其中处理更新,然后在FavoriteActivity.java中访问此ArrayList,并将其分配给新的ArrayList
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;
}
}
这个类有两个字段,都是表示ID和一些文本的字符串。在构造函数和两个get方法中初始化以返回其值
FavoriteAdapter.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;
}
}
导入被省略。
公共类FavoriteAdapter扩展了ArrayAdapter{
公共收藏夹适配器(上下文,ArrayList收藏夹){
超级(上下文,0,收藏夹);
}
@非空
@凌驾
公共视图getView(int位置,视图转换视图,@NonNull视图组父级){
if(convertView==null){
convertView=LayoutInflater.from(getContext()).flate(R.layout.favorite_项,父项,false);
}
收藏夹CurrentFavorite=getItem(位置);
TextView id TextView=(TextView)convertView.findViewById(R.id.id\u text\u视图);
idTextView.setText(currentFavorite.getId());
TextView TextView=(TextView)convertView.findViewById(R.id.text\u text\u视图);
textView.setText(currentFavorite.getText());
返回视图;
}
}
FavoriteActivity.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;
}
}
此类使用并显示已使用适配器和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);
}
}
导入被省略。
公共类FavoriteActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u收藏夹);
ArrayList AllFavorites=MainActivity.AllFavorites;
FavoriteAdapter FavoriteAdapter=新的FavoriteAdapter(FavoriteActivity.this,AllFavorites);
ListView ListView=(ListView)findViewById(R.id.list\u视图);
setAdapter(FavoriteAdapter);
}
}
MainActivity.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;
}
}
这是用户显示事实的主视图GUI。您可以在收藏夹中实现Parcelable,并将列表传递到活动中。