Java 将数据从地图添加到动态创建的视图
我有一个方法CreateView,它动态地创建视图,并用SharedPrefernces文件中的数据填充视图 首先,对于(文件loadFile:loadFiles)工作正常。它在创建视图的字段中填充数据,其中100%在文件SharedPrefernces中 第二个用于(Map.Entry:usersPresets.getAll().entrySet())。它在创建的视图中填充数据,但不填充它们在SharedReferences文件中的事实。这是我的问题Java 将数据从地图添加到动态创建的视图,java,android,android-studio,view,hashmap,Java,Android,Android Studio,View,Hashmap,我有一个方法CreateView,它动态地创建视图,并用SharedPrefernces文件中的数据填充视图 首先,对于(文件loadFile:loadFiles)工作正常。它在创建视图的字段中填充数据,其中100%在文件SharedPrefernces中 第二个用于(Map.Entry:usersPresets.getAll().entrySet())。它在创建的视图中填充数据,但不填充它们在SharedReferences文件中的事实。这是我的问题 public void CreateVie
public void CreateView(File[] loadFiles) {
if (presetsStorage.exists()) {
for (File loadFile : loadFiles) {
//noinspection SpellCheckingInspection
if (!loadFile.getName().contains("userpreset_")) {
//noinspection UnnecessaryContinue
continue;
} else {
if (loadFile.isFile()) {
String presetsName = loadFile.getName();
presetsName = presetsName.substring(0, presetsName.length() - 4);
usersPresets = getSharedPreferences(presetsName, MODE_PRIVATE);
presetsContainer = (LinearLayout) findViewById(R.id.presetsContainer);
View userPresetsView = getLayoutInflater()
.inflate(R.layout.preset_fragment, presetsContainer, false);
userPresetsView.findViewById(R.id.presetFragMenubtn)
.setOnClickListener(viewClickListener);
((CircularSeekBar) userPresetsView.findViewById(R.id.presetFragA)).
setProgress(usersPresets.getInt("a", 0));
((CircularSeekBar) userPresetsView.findViewById(R.id.presetFragB)).
setProgress(usersPresets.getInt("b", 0));
((CircularSeekBar) userPresetsView.findViewById(R.id.presetFragC)).
setProgress(usersPresets.getInt("c", 0));
TextView presetFragName = (TextView) userPresetsView
.findViewById(R.id.userPresetName);
presetFragName.setText(presetsName);
presetFragName.setOnClickListener(viewClickListener2);
presetsContainer.addView(userPresetsView);
presetFragName.setText(presetsName.substring(11));
//HERE I HAVE A PROBLEM
for (Map.Entry<String, ?> entry : usersPresets.getAll().entrySet()) {
if (arr.contains(entry.getKey())) {
// noinspection UnnecessaryContinue
continue;
} else {
CardView flavor_cardView = (CardView) findViewById(R.id.flavor_cardView);
final View usersFlavorsPreset = getLayoutInflater()
.inflate(R.layout.preset_userflavor_fragment, flavor_cardView, false);
((TextView) usersFlavorsPreset.findViewById(R.id.tvUserFlavorPresetName))
.setText(entry.getKey());
((TextView) usersFlavorsPreset.findViewById(R.id.tvUserFlavorPresetValue)).
setText(String.valueOf(entry.getValue()));
flavor_cardView.addView(usersFlavorsPreset);
}
}
}
}
}
}
}
public void CreateView(文件[]加载文件){
if(presetsStorage.exists()){
用于(文件加载文件:加载文件){
//无检查拼写检查检查
如果(!loadFile.getName().包含(“用户预置”)){
//无需继续进行不必要的检查
继续;
}否则{
if(loadFile.isFile()){
字符串presetsName=loadFile.getName();
presetsName=presetsName.substring(0,presetsName.length()-4);
usersPresets=GetSharedReferences(预设名称,模式\私有);
presetsContainer=(LinearLayout)findViewById(R.id.presetsContainer);
View userPresetsView=GetLayoutFlater()
.充气(R.layout.preset_碎片,preset容器,假);
userPresetsView.findViewById(R.id.presetFragMenubtn)
.setOnClickListener(查看ClickListener);
((循环sekbar)userPresetsView.findViewById(R.id.presetFragA))。
setProgress(usersPresets.getInt(“a”,0));
((循环sekbar)userPresetsView.findviewbyd(R.id.presetFragB))。
setProgress(usersPresets.getInt(“b”,0));
((循环sekbar)userPresetsView.findViewById(R.id.presetFragC))。
setProgress(usersPresets.getInt(“c”,0));
TextView预设格式名称=(TextView)用户预设视图
.findViewById(R.id.UserName);
预设FRAGNAME.SETEXT(预设名称);
预设Fragname.setOnClickListener(视图ClickListener2);
presetsContainer.addView(userPresetsView);
预设FRAGNAME.SETEXT(预设名称子字符串(11));
//我有个问题
对于(Map.Entry:usersPresets.getAll().entrySet()){
if(arr.contains(entry.getKey())){
//无需继续进行不必要的检查
继续;
}否则{
CardView flavor\u CardView=(CardView)findViewById(R.id.flavor\u CardView);
最终视图用户sflavorspreset=getLayoutInflater()
.充气(R.layout.preset_userflavor_片段,flavor_cardwiew,false);
((TextView)usersFlavorsPreset.findviewbyd(R.id.tvUserFlavorsPresetName))
.setText(entry.getKey());
((TextView)usersFlavorsPreset.findviewbyd(R.id.tvUserValvePresetValue))。
setText(String.valueOf(entry.getValue());
添加视图(usersFlavorsPreset);
}
}
}
}
}
}
}
我需要的是,在出现这些数据时,根据SharedReferences中的数据量创建一个新行。现在,它可以工作了,但只创建了一行,而值只重写并显示了第二次迭代的最后一次迭代中的数据
屏幕截图,我试图解释问题:
视图-
aaa.xml的内容-
test.xml的内容-
请告诉我,我需要在哪里放置,以便在同一位置不会覆盖值。
我希望这至少能解释一点可以理解的。如果您不知道,我将尝试再次描述该问题
更新:我在CardView中添加了LinearLayout,现在所有元素都显示在一个位置。那么另一个问题-如何将它们放在正确的框中
for (Map.Entry<String, ?> entry : usersPresets.getAll().entrySet()) {
if (arr.contains(entry.getKey())) {
// noinspection UnnecessaryContinue
continue;
} else {
LinearLayout flavor_linear = (LinearLayout) findViewById(R.id.flavor_linear);
final View usersFlavorsPreset = getLayoutInflater().
inflate(R.layout.preset_userflavor_fragment, flavor_linear, false);
((TextView) usersFlavorsPreset.
findViewById(R.id.tvUserFlavorPresetName)).setText(entry.getKey());
((TextView) usersFlavorsPreset.
findViewById(R.id.tvUserFlavorPresetValue)).setText(String.valueOf(entry.getValue()));
flavor_linear.addView(usersFlavorsPreset);
}
}
for(Map.Entry:usersPresets.getAll().entrySet()){
if(arr.contains(entry.getKey())){
//无需继续进行不必要的检查
继续;
}否则{
LinearLayout flavor\u linear=(LinearLayout)findViewById(R.id.flavor\u linear);
最终视图usersFlavorsPreset=getLayoutInflater()。
充气(R.layout.preset\u userflavor\u片段,flavor\u线性,假);
((TextView)usersFlavorsPreset。
findviewbyd(R.id.tvUserFlavorPresetName)).setText(entry.getKey());
((TextView)usersFlavorsPreset。
findviewbyd(R.id.tvUserValvePresetValue)).setText(String.valueOf(entry.getValue());
flavor\u linear.addView(usersFlavorsPreset);
}
}