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

标签 java android sharedpreferences textview

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

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

        }
    }
}

最佳答案

根据新信息进行编辑:

要显示 TextView 中当前打开的所有开关的文本,我建议您创建一个

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

只要切换按钮设置为“开”,您就可以将该切换按钮的标签添加到列表中。每当切换按钮设置为“关闭”时,您就可以从列表中删除该标签。

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 对象中。从存储中恢复它们只是拆分字符串和填充列表的逆操作。根据您提供的代码,我认为没有必要这样做,但当然可能比您在此处发布的内容更多。

关于java - 如何在 TextView 中显示 ArrayList 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28749747/

相关文章:

java - 什么是应用程序 Controller 模式?

android - 在 Android Studio 中使用 Graph API 从 JSON 对象中检索数据

android - 作为 HeaderView 一部分的 EditText 失去了对输入的关注

java - 共享首选项中的 Android 颜色

java - 在java中捕获面板中的击键

java - 使用Android虚拟设备的编译问题

android - 任意应用程序之间的 SharedPreferences

string - 如何定义多个sharedPreferences?

java - 需要帮助理解本类(class)的部分内容

android - 检查用户是否正在通过代码查看屏幕