我正在制作锻炼日志,我希望其他用户能够添加新的锻炼类型。
我在资源中创建了一个字符串数组,并在一个微调器中创建了资源中字符串数组的字符串。
我不确定如何从java代码向资源字符串数组添加新字符串。 我尝试了这段代码,但我得到了例外。
感谢您的帮助:)。
public void onClick(View v) {
switch(v.getId()){
case R.id.setNewExercise:
String[] exerciseStringArray = getResources().getStringArray(R.array.exerciseTypes);
ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(this, R.array.exerciseTypes, android.R.layout.simple_list_item_1);
String exerciseCheck = addNewExercise.getText().toString();
try{
for (int i = 0; i < exerciseStringArray.length; i++)
{
if (exerciseCheck.equals(exerciseStringArray[i]))
{
Toast.makeText(getApplicationContext(), "This exercise already exist", Toast.LENGTH_LONG).show();
break;
}
else if (i == exerciseStringArray.length - 1 && exerciseCheck.equals(exerciseStringArray[i]) == false)
{
list.add(exerciseCheck);
Toast.makeText(getApplicationContext(), "Added Successfully", Toast.LENGTH_LONG).show();
break;
}
}
}catch(Exception e){
Toast.makeText(getApplicationContext(), "wtf", Toast.LENGTH_LONG).show();
}
}
}
我现在尝试了这段代码,我的微调器被加载为空,我试图保存新字符串时强行关闭。
/////////////////////Exercise spinner/////////////////////
// Create an ArrayAdapter using the string array and a default spinner layout
list = new ArrayList<CharSequence>();
exerciseAdapter = new ArrayAdapter<CharSequence>(this, R.array.exerciseTypes, list);
// Specify the layout to use when the list of choices appears
exerciseAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
workOutChoose.setAdapter(exerciseAdapter);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.setNewExercise:
String exerciseCheck = addNewExercise.getText().toString();
try{
if (exerciseAdapter.getPosition(exerciseCheck) >= 0)
{
Toast.makeText(getApplicationContext(), "This exercise already exist", Toast.LENGTH_LONG).show();
break;
}
else
{
exerciseAdapter.add(exerciseCheck);
exerciseAdapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Added Successfully", Toast.LENGTH_LONG).show();
break;
}
}
catch(Exception e){
Toast.makeText(getApplicationContext(), "wtf", Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:1)
您无法自行修改资源。如果您愿意,我们欢迎您将String[]
转换为ArrayList<String>
并添加其他字符串,例如文件,数据库,SharedPreferences
。
add()
来自ArrayAdapter
,而不是Java数组(ArrayAdapter
),那么ArrayList
上的[]
可以作为Java数组的大小无法在运行时更改。