如何在Buttonclick上的Android Studio中将数据保存在Deque中?

问题描述 投票:0回答:1

我正在尝试将数据单击按钮保存到Deque,并以表格布局显示数据。我的问题是,每次触发onclick时,双端队列都会丢失所有先前的数据。我试图在onCreate方法之外实例化Deque,但它不起作用。我使用Deque作为堆栈,因为我需要显示数据LIFO。任何帮助,将不胜感激。这是到目前为止我尝试过的内容:

public class MainActivity extends AppCompatActivity {

    private Button buttonAdd;
    private EditText editText1;
    private Deque<String> input;

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

        final EditText editText1 = (EditText)findViewById(R.id.edit_text_1);
        final Deque<String> input = new ArrayDeque<String>();

        buttonAdd = (Button) findViewById(R.id.button_add);
        buttonAdd.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                TableLayout table = (TableLayout) findViewById(R.id.tableLayout1);

                String data = editText1.getText().toString();
                input.addFirst(data);

                Deque<String> inputData = input;

                while (!inputData.isEmpty()) {

                    String s = inputData.removeFirst();
                    TableRow row = new TableRow(MainActivity.this);

                    TextView textViewData = new TextView(MainActivity.this);
                    textViewData.setText(s);
                    textViewData.setGravity(Gravity.CENTER);
                    row.addView(textViewData);

                    table.addView(row);
                }

            }
        });
    }
}
android
1个回答
0
投票

问题是此行:

String s = inputData.removeFirst();

通过此操作,您删除(删除)了下一个条目,并且由于您是在循环中进行:

while (!inputData.isEmpty()) {

它只是清空队列。

您想要的是遍历队列而不删除任何内容:

for (String element : inputData) {
     textViewData.setText(s);
}
© www.soinside.com 2019 - 2024. All rights reserved.