Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数据从地图添加到动态创建的视图_Java_Android_Android Studio_View_Hashmap - Fatal编程技术网

Java 将数据从地图添加到动态创建的视图

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

我有一个方法CreateView,它动态地创建视图,并用SharedPrefernces文件中的数据填充视图

首先,对于(文件loadFile:loadFiles)工作正常。它在创建视图的字段中填充数据,其中100%在文件SharedPrefernces中

第二个用于(Map.Entry:usersPresets.getAll().entrySet())。它在创建的视图中填充数据,但不填充它们在SharedReferences文件中的事实。这是我的问题

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);
}
}