如何在TextView中显示ArrayList中的字符串

时间:2015-02-26 18:11:52

标签: java android sharedpreferences textview

我需要在TextView中显示当前值(删除String后)。 当按钮打开时我添加字符串,我需要删除它,当它关闭时(我不知道我是否做得好),接下来我需要在TextView中显示字符串而不删除串。我只需要在On按钮上显示Strings。 这是我的代码:

public class Calc extends ActionBarActivity {

    TextView display;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);

        display = (TextView)findViewById(R.id.textView2);
        display.setText("Add item");
    }

    static boolean isempty=true;

    public void changeButton(View sender) {
    ToggleButton btn = (ToggleButton) sender;

    ArrayList<String> mActiveToggles = new ArrayList<String>();

    String b = btn.getText().toString();

    boolean on = ((ToggleButton) sender).isChecked();

    if(on) {
        if (isempty) {
            if (b.equals("0")) return;
            display.setText(btn.getText());
            mActiveToggles.add(b);
            isempty = false;
        } else {
            display.append(btn.getText());
            mActiveToggles.add(b);
        }
    }
    else
    {
        if (b.equals(btn.getText()))
        {
            mActiveToggles.remove(b);
            display.setText(mActiveToggles.toString());

        }
    }
}

2 个答案:

答案 0 :(得分:0)

根据新信息进行编辑:

要显示TextView中当前开启的所有切换的文字,我建议您创建一个

private ArrayList<String> mActiveToggles = new ArrayList<String>();

每当切换按钮设置为ON时,您都会将该切换按钮的标签添加到列表中。每当切换按钮设置为OFF时,您将从列表中删除标签。

if(on) {
    if (b.equals("0")) return; // Don't really know why you need this one...

    // If the button is ON, add its text label to the list.
    mActiveToggles.add(btn.getText());
} else {
    // If button is OFF, remove its text label from the list.
    mActiveToggles.remove(btn.getText());
}

更新列表中项目的TextView简单迭代,并将其添加到TextView(使用适当的分隔符)。像这样:

StringBuilder allLabels = new StringBuilder();
for(String s : mActiveToggles) {
    if(allLabels.length() > 0) {
        allLabels.append(" "); // some divider between the different texts
    }
    allLabels.append(s);
}
display.setText(allLabels.toString());

如果您确实需要持久存储TextView的内容,请迭代列表项并将它们连接起来,然后将它们存储到SharedPreferences对象中。从存储中恢复它们只是拆分String并填充列表的相反操作。根据您提供的代码,我认为没有必要,但当然可以比您在此处发布的内容更多。

答案 1 :(得分:0)

要从共享首选项中获取字符串,您必须使用:

if(sharedpreferences.contains(key_value)){
textview.setText(sharedpreferences.getString(key_value, null));
}

如果您有任何问题,请告诉我。