动态地向资源字符串数组添加新字符串

时间:2013-05-04 19:58:51

标签: android string android-arrayadapter arrays

我正在制作锻炼日志,我希望其他用户能够添加新的锻炼类型。

我在资源中创建了一个字符串数组,并在一个微调器中创建了资源中字符串数组的字符串。

我不确定如何从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();
        }

    }

}

1 个答案:

答案 0 :(得分:1)

您无法自行修改资源。如果您愿意,我们欢迎您将String[]转换为ArrayList<String>并添加其他字符串,例如文件,数据库,SharedPreferences

如果add()来自ArrayAdapter,而不是Java数组(ArrayAdapter),那么ArrayList上的[]可以作为Java数组的大小无法在运行时更改。