将数据存储为键值对的形式,然后用于填充微调器
Storing data into form of Key Value pair and later using to populate spinner
我正在开发一个 android 应用程序,该应用程序在线时会从服务器获取键值列表并将其存储在文件中。离线时,此列表显示在微调器中(下拉)
保存该列表以便对其进行写入和读取的最佳方法是什么
这就是我的工作原理。
首先是我获取数据并将其放入一个HashMap 中。 HashMap 存储的是PowerPreference。这允许即使设备处于离线状态也可以访问数据
PowerPreference - https://github.com/AliAsadi/PowerPreference
List<Material> materialArray = data.getMaterial();
HashMap<Integer, String> materialMap = new HashMap<Integer, String>();
for(Material material : materialArray){
materialMap.put(Integer.parseInt(material.getId()), material.getMaterialName());
}
if(PowerPreference.getFileByName(powerPrefFile).contains(powerPrefMat)){
PowerPreference.getFileByName(powerPrefFile).remove(powerPrefMat);
}
PowerPreference.getFileByName(powerPrefFile).putMap(powerPrefMat, materialMap);
存储的数据可以离线检索,因为它存储在本地存储中
/data/data/com.pakage.name/shared_prefs
MapStructure structure = MapStructure.create(HashMap.class, String.class, Object.class);
if(PowerPreference.getFileByName(powerPrefFile).contains(powerPrefMat)){
HashMap<Integer, String> materialMap = PowerPreference.getFileByName(powerPrefFile).getMap(powerPrefMat, structure);
if(!materialMap.isEmpty()){
populateSpinner(materialMap);
}
}
这是使用 StringWithTag 使用键值对填充微调器的代码
http://blog.mikeclassic.ca/post/android-populating-spinner-with-strings-and-id
public void populateSpinner(HashMap<Integer, String> map){
List<StringWithTag> arrayList = new ArrayList<StringWithTag>();
arrayList.add(new StringWithTag("Select Material", 0));
for (Map.Entry<Integer, String> entry : map.entrySet()) {
Integer key = Integer.parseInt(String.valueOf(entry.getKey()));
String value = entry.getValue();
arrayList.add(new StringWithTag(value, key));
}
ArrayAdapter<StringWithTag> arrayAdapter = new ArrayAdapter<StringWithTag>(this, android.R.layout.simple_spinner_item, arrayList);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
materialSpinner.setAdapter(arrayAdapter);
}
我正在开发一个 android 应用程序,该应用程序在线时会从服务器获取键值列表并将其存储在文件中。离线时,此列表显示在微调器中(下拉)
保存该列表以便对其进行写入和读取的最佳方法是什么
这就是我的工作原理。
首先是我获取数据并将其放入一个HashMap 中。 HashMap 存储的是PowerPreference。这允许即使设备处于离线状态也可以访问数据 PowerPreference - https://github.com/AliAsadi/PowerPreference
List<Material> materialArray = data.getMaterial();
HashMap<Integer, String> materialMap = new HashMap<Integer, String>();
for(Material material : materialArray){
materialMap.put(Integer.parseInt(material.getId()), material.getMaterialName());
}
if(PowerPreference.getFileByName(powerPrefFile).contains(powerPrefMat)){
PowerPreference.getFileByName(powerPrefFile).remove(powerPrefMat);
}
PowerPreference.getFileByName(powerPrefFile).putMap(powerPrefMat, materialMap);
存储的数据可以离线检索,因为它存储在本地存储中
/data/data/com.pakage.name/shared_prefs
MapStructure structure = MapStructure.create(HashMap.class, String.class, Object.class);
if(PowerPreference.getFileByName(powerPrefFile).contains(powerPrefMat)){
HashMap<Integer, String> materialMap = PowerPreference.getFileByName(powerPrefFile).getMap(powerPrefMat, structure);
if(!materialMap.isEmpty()){
populateSpinner(materialMap);
}
}
这是使用 StringWithTag 使用键值对填充微调器的代码 http://blog.mikeclassic.ca/post/android-populating-spinner-with-strings-and-id
public void populateSpinner(HashMap<Integer, String> map){
List<StringWithTag> arrayList = new ArrayList<StringWithTag>();
arrayList.add(new StringWithTag("Select Material", 0));
for (Map.Entry<Integer, String> entry : map.entrySet()) {
Integer key = Integer.parseInt(String.valueOf(entry.getKey()));
String value = entry.getValue();
arrayList.add(new StringWithTag(value, key));
}
ArrayAdapter<StringWithTag> arrayAdapter = new ArrayAdapter<StringWithTag>(this, android.R.layout.simple_spinner_item, arrayList);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
materialSpinner.setAdapter(arrayAdapter);
}