我的问题是保存从JSON文件解析的内容
我想保存内容,因此在从最近清除应用程序后,JSON的内容将保持未删除状态。实际上JSON正在被解析,但在完全关闭应用程序后,我必须启用网络连接以再次检索JSON的内容。
如果需要更多代码,我会添加它 - 只是说这样做
干杯!
package pl.bugbreaker.cherry56su.Docs;
import java.util.ArrayList;
import pl.bugbreaker.cherry56su.Docs.Download_data.download_complete;
import pl.bugbreaker.cherry56su.R;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.util.Linkify;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import static android.support.v7.appcompat.R.styleable.View;
public class DocsActivity extends AppCompatActivity implements download_complete {
public ListView docs_list;
public ArrayList<Doc> documents = new ArrayList<Doc>();
public ListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_docs);
getSupportActionBar().setTitle("Dokumenty");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setElevation(0);
docs_list = (ListView) findViewById(R.id.docs_list);
adapter = new ListAdapter(this);
docs_list.setAdapter(adapter);
Download_data download_data = new Download_data((download_complete) this);
download_data.download_data_from_link("http://link.com/file.json");
}
public void get_data(String data)
{
try {
JSONArray data_array=new JSONArray(data);
for (int i = 0 ; i < data_array.length() ; i++)
{
JSONObject obj=new JSONObject(data_array.get(i).toString());
Doc add=new Doc();
add.doc = obj.getString("doc");
add.doc_link = obj.getString("doc_link");
documents.add(add);
}
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
}
修改
我会尽快检查所有这些答案,当我完成时,将检查答案并解决问题。
答案 0 :(得分:2)
持久性JSON内容
您可以使用gson更轻松地解析JSON数据。 在build.gradle文件中添加此依赖项。
compile 'com.google.code.gson:gson:2.8.0'
然后创建一个POJO类来解析JSON数据。
示例POJO类:
public class AppGeneralSettings {
@SerializedName("key1")
String data;
public String getData() {
return data;
}
}
示例JSON对象
{
"key1":"hellow world!"
}
要解析来自互联网的json字符串,请使用此代码段
AppGeneralSettings data=new Gson().fromJson(jsonString, AppGeneralSettings.class);
然后添加一个辅助类来存储和从首选项中检索JSON数据。
示例:用于存储数据的助手类
public class AppPreference {
private static final String FILE_NAME = BuildConfig.APPLICATION_ID + ".apppreference";
private static final String APP_GENERAL_SETTINGS = "app_general_settings";
private final SharedPreferences preferences;
public AppPreference(Context context) {
preferences = context.getSharedPreferences(FILE_NAME, MODE_PRIVATE);
}
public SharedPreferences.Editor setGeneralSettings(AppGeneralSettings appGeneralSettings) {
return preferences.edit().putString(APP_GENERAL_SETTINGS, new Gson().toJson(appGeneralSettings));
}
public AppGeneralSettings getGeneralSettings() {
return new Gson().fromJson(preferences.getString(APP_GENERAL_SETTINGS, "{}"), AppGeneralSettings.class);
}
}
保存数据
new AppPreference().setGeneralSettings(appGeneralSettings).commit();
检索数据
AppGeneralSettings appGeneralSettings = new AppPreference().getGeneralSettings();