我正在尝试将数据单击按钮保存到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);
}
}
});
}
}
问题是此行:
String s = inputData.removeFirst();
通过此操作,您删除(删除)了下一个条目,并且由于您是在循环中进行:
while (!inputData.isEmpty()) {
它只是清空队列。
您想要的是遍历队列而不删除任何内容:
for (String element : inputData) {
textViewData.setText(s);
}