更新 - 输入活动
public class MainActivity extends AppCompatActivity {
public static String PREFS_NAME = "prefs";
public static String VALUES_KEY = "vals";
EditText editText;
SharedPreferences prefs;
@Override
protected void onStart() {
super.onStart();
prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
}
private void addValue(Object s) {
prefs.edit()
.putString(VALUES_KEY, String.valueOf(s))
.apply();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_edit_btn);
editText = (EditText) findViewById(R.id.editText);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = editText.getText().toString();
JSONArray arr = new JSONArray();
// Just for testing
if (s.equals("clear")) {
addValue(arr);
Toast.makeText(MainActivity.this, "prefs cleared", Toast.LENGTH_SHORT).show();
return;
}
String jsonString = prefs.getString(VALUES_KEY, arr.toString());
// Store a JSON array
try {
arr = new JSONArray(jsonString);
arr.put(s);
addValue(arr);
} catch (JSONException e) {
e.printStackTrace();
}
// Go to next activity
startActivity(new Intent(MainActivity.this, TableLayoutActivity.class));
}
});
}
}
第二个活动 - 有桌子
public class TableLayoutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tablelayout);
SharedPreferences prefs = getSharedPreferences(MainActivity.PREFS_NAME, MODE_PRIVATE);
TableLayout tl = (TableLayout) findViewById(R.id.table);
// Get the array out of preferences
JSONArray arr = new JSONArray();
String jsonString = prefs.getString(MainActivity.VALUES_KEY, arr.toString());
LayoutInflater inflater = LayoutInflater.from(this);
try {
arr = new JSONArray(jsonString);
// Loop backwards over list, adding rows
for (int i = arr.length() - 1; i >= 0; --i) {
View rowView = inflater.inflate(R.layout.table_row, tl, false);
TextView rowText = (TextView) rowView.findViewById(android.R.id.text1);
rowText.setText( i + ": " + arr.getString(i));
tl.addView(rowView,
TableLayout.LayoutParams.MATCH_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
原答案
每次我在表格中添加一个新字符串时,前一个字符串会向下移动一行,新字符串会取代旧字符串
我在您的问题中没有看到 TableLayout 或 TableRow。有三个常量字符串,但您想要显示它们的顺序似乎不清楚。
但这里有一种方法...您将字符串列表存储在 SharedPreferences 或数据库中,无论什么。您使用TableLayout tl = (TableLayout) findViewById(R.id.tableLayout) 将该字符串列表传递给活动。
从那里,您可以简单地向后循环for (int i = list.size(); i >=0; i--),获取String s = list.get(i);,然后生成一个TableRow tr = new TableRow(),您将添加一些TextView,您已经在上面添加了setText(s)。 (或inflate 一些包含TextView 和TableRow 的XML 文件)。
当你完成TableRow tr 的构建后,你就可以
tl.addView(tr, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
因此,做我上面引用的事情。