Android SharedReferences与使用For循环创建的EditText

Android SharedReferences与使用For循环创建的EditText,android,Android,我用“for loop”创建了EditText,我想用SharedReferences保存EditText中的数据。我可以通过xml创建EditText来实现这一点,但这需要花费大量的时间和精力。下面你可以看到代码。使用第二个“for循环”,我已经创建了15个EditText(数字会增加),我想存储这些EditText中的数据,以便进行一些计算。如何将SharedReferences与“for loop”一起用于这些编辑文本 public class MainActivity extends A

我用“for loop”创建了EditText,我想用SharedReferences保存EditText中的数据。我可以通过xml创建EditText来实现这一点,但这需要花费大量的时间和精力。下面你可以看到代码。使用第二个“for循环”,我已经创建了15个EditText(数字会增加),我想存储这些EditText中的数据,以便进行一些计算。如何将SharedReferences与“for loop”一起用于这些编辑文本

public class MainActivity extends AppCompatActivity {

    private ScrollView sV;
    private LinearLayout pnl;
    private GridLayout gL;
    private TextView tV;
    private Button btn;
    private EditText eT;

    private void init() {

        sV = new ScrollView(this);
        hsV = new HorizontalScrollView(this);
        pnl = new LinearLayout(this);
        pnl.setOrientation(LinearLayout.VERTICAL);
        gL = new GridLayout(this);
        gL.setColumnCount(2);

        final String[] title = getResources().getStringArray(R.array.title);
        final String[] info = getResources().getStringArray(R.array.info);

        for (int j = 0; j < 2; j++) {

            tV = new TextView(this);
            tV.setText(title[j]);
            tV.setTextSize(20);
            tV.setTypeface(Typeface.DEFAULT_BOLD);
            tV.setTextColor(getResources().getColor(R.color.colorText));
            gL.addView(tV);

        }

        for (int i = 0; i < 15; i++) {

            tV = new TextView(this);
            tV.setText(info[i]);
            tV.setTextSize(20);
            tV.setTextColor(getResources().getColor(R.color.colorText));
            gL.addView(tV);

            eT = new EditText(this);
            eT.setTextSize(20);
            eT.setInputType(InputType.TYPE_CLASS_NUMBER);
            gL.addView(eT);

        }

        btn = new Button(this);
        btn.setText("Save");
        gL.addView(btn);

        pnl.addView(gL);
        sV.addView(pnl);

    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
        setContentView(sV);

    }

}
public类MainActivity扩展了AppCompatActivity{
私有滚动视图sV;
私人线路布局pnl;
私有网格布局;
私家图文电视;
专用按钮btn;
私人编辑;
私有void init(){
sV=新的滚动视图(此);
hsV=新的水平滚动视图(本);
pnl=新的线性布局(本);
pnl.设置方向(线性布局。垂直);
gL=新网格布局(本);
gL.setColumnCount(2);
最终字符串[]title=getResources().getStringArray(R.array.title);
最终字符串[]info=getResources().getStringArray(R.array.info);
对于(int j=0;j<2;j++){
tV=新文本视图(此);
tV.setText(标题[j]);
电视节目(20);
tV.setTypeface(Typeface.DEFAULT_BOLD);
tV.setTextColor(getResources().getColor(R.color.colorText));
总图:addView(电视);
}
对于(int i=0;i<15;i++){
tV=新文本视图(此);
tV.setText(info[i]);
电视节目(20);
tV.setTextColor(getResources().getColor(R.color.colorText));
总图:addView(电视);
eT=新编辑文本(本);
eT.setTextSize(20);
eT.setInputType(InputType.TYPE\类别\编号);
总帐addView(eT);
}
btn=新按钮(此按钮);
btn.setText(“保存”);
总帐添加视图(btn);
pnl.addView(gL);
sV.addView(pnl);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
init();
setContentView(sV);
}
}

您可以在编辑文本上添加标记以识别它们

然后,您可以将这些标记用作SharedReference中的键,类似于:

for (int i = 0; i < 15; i++) {
  eT = new EditText(this);
  eT.setTextSize(20);
  eT.setInputType(InputType.TYPE_CLASS_NUMBER);

  // adding a tag to identify the EditText
  String tag = "edit" + i;
  eT.setTag(tag);

  gL.addView(eT);
}

你能再解释一下吗?
我想存储这些编辑文本中的数据,以便进行一些计算
,那么你想为每个编辑文本保存哪些数据呢?我是一名农业工程师。(上图)对于本例,文本表示肥料的数量。每种肥料的比例也会有更多的数据。用户可以更改每个编辑文本。
@Override
public void afterTextChanged(Editable editable) {
  // get values
  String key = (String)editable.getTag()
  String value = editable.getText().toString()

  // save in SharedPreferences
  sharedPreferencesEditor.putString(key, values)
  sharedPreferencesEditor.commit()
}