0
2つのアクティビティに2つのArrayListがあります。最初のArrayListには約1000個のアイテム(JSONファイルに保存されています)が含まれ、2番目のArrayListには0個のアイテムが含まれています。切り替え後のArrayListデータの保存
「のonClick」とArrayList2に1つのアイテムを追加します。しかし、私はアプリケーションを閉じたときに活動が文句を言わない節約することが可能です。
これらの変更を保存するにはどうすればよいですか?
1.MainActivity:
public class MainActivity extends AppCompatActivity {
static ArrayList<Recipe> recipeList = new ArrayList();
public class ObjList{
public ArrayList<String> recipeList = new ArrayList<>();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.recipe_list_view);
recipeList = Recipe.getRecipesFromFile("recipes.json", this);
String[] listItems = new String[recipeList.size()];
for (int i = 0; i < recipeList.size(); i++) {
Recipe recipe = recipeList.get(i);
listItems[i] = recipe.title;
}
final RecipeAdapter adapter = new RecipeAdapter(this, recipeList);
mListView.setAdapter(adapter);
final Context context = this;
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Recipe selectedRecipe = recipeList.get(position);
recipeList.remove(selectedRecipe);
recipeList2.add(selectedRecipe);
adapter.notifyDataSetChanged();
}
});
};
public void test_onClick(View view) {
Intent intent = new Intent(MainActivity.this, TestActivity.class);
startActivity(intent);
}
private ListView mListView;
}
2.Activity:
public class TestActivity extends AppCompatActivity {
static ArrayList<Recipe> recipeList2 = new ArrayList<>();
public void onCreate(Bundle savedInstanceState) {
ListView mListView;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mListView = (ListView) findViewById(R.id.testlist2);
final RecipeAdapter adapter = new RecipeAdapter (this, recipeList2);
mListView.setAdapter(adapter);
final Context context = this;
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Recipe selectedRecipe = recipeList2.get(position);
recipeList2.remove(selectedRecipe);
recipeList.add(selectedRecipe);
adapter.notifyDataSetChanged();
}});}
public void test2_onClick(View view) {
Intent intent = new Intent(TestActivity.this, MainActivity.class);
startActivity(intent);
}}
Recipe.class:
public static ArrayList<Recipe> getRecipesFromFile(String filename, Context context){
final ArrayList<Recipe> recipeList = new ArrayList<>();
try {
// Load data
String jsonString = loadJsonFromAsset("recipes.json", context);
JSONObject json = new JSONObject(jsonString);
JSONArray recipes = json.getJSONArray("recipes");
// Get Recipe objects from data
for(int i = 0; i < recipes.length(); i++){
Recipe recipe = new Recipe();
recipe.title = recipes.getJSONObject(i).getString("title");
recipeList.add(recipe);
}
} catch (JSONException e) {
e.printStackTrace();
}
return recipeList; }
private static String loadJsonFromAsset(String filename, Context context) {
String json = null;
try {
InputStream is = context.getAssets().open(filename);
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
}
catch (java.io.IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
}
リストを保存しようとするコードが表示されません...なぜそれが保存されると思いましたか?ファイルに返信する –
私は自分のリストを保存する方法がわからないので分かります – GvrG
ディスク上の 'File'オブジェクトを開いて書き込みます –