我有兩個活動(A和B),活性的要求提供一個文本輸入(字符串)和活性B存儲該字符串在表中。我希望實現的目標:每次向表中添加一個新字符串時,前一個字符串向下移動一行,新字符串將取代舊字符串的位置。我也希望在每次返回活動A時將活動B中的表格佈局保存起來。如何實現這一目標?數據定位 - Android Studio中
0
A
回答
0
更新 - 輸入活動
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()
,你會增加一些,你就可以一直setText(s)
TextView
。 (或者inflate
一些包含TextView
和TableRow
的XML文件)。
當您完成建設TableRow tr
,那麼你就可以
tl.addView(tr, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
因此,做什麼我上面引述。
相關問題
- 1. 地理定位android studio
- 2. Android Studio - JSON數據
- 3. Android Studio位圖
- 4. Android-Studio數據綁定不起作用
- 5. Android Studio 2.2數據綁定錯誤
- 6. 在Android Studio項目中放置現有數據庫的位置
- 7. 絕對定位與拖放在Android Studio
- 8. 定製Android Studio中
- 9. Android Studio JDK位置
- 10. Android Studio .gitignore位置
- 11. Android studio SQLite數據庫特定條目的數據檢索
- 12. 如何在Android Studio中僅顯示數據庫中選定的數據
- 13. Android studio創建數據庫
- 14. 在Android Studio中管理SQLite數據庫
- 15. 閱讀在Android Studio中的JSON數據
- 16. 碎片中的SQLite數據庫 - Android Studio
- 17. Android - ImageButton定位到位圖
- 18. Tabitem在android studio中綁定
- 19. Android Studio for Windows 32位
- 20. Android Studio:位圖縮放圖
- 21. Android Studio Google地圖位置
- 22. SQLite數據庫位於android
- 23. 數據綁定 - Visual Studio 2010中
- 24. 根據android studio中的位置動態調整線性佈局
- 25. Android Studio中三倍大的位圖
- 26. Android Studio中的位圖邊界
- 27. 在android studio中找不到SDK位置
- 28. 如何在Android Studio中定位薑餅裝置?
- 29. 在android studio中獲取谷歌地圖的特定位置
- 30. Android Studio:在循環中創建定位按鈕
怎麼樣在插入適配器的開始RecyclerView?你有動態數據,所以最好使用適配器 –
感謝您的回覆@ cricket_007。我不太確定你的意思? – Erz
不幸的是,我無法在Android Studio中找到您所說的RecyclerView。你會碰巧有這樣一個過程的示例代碼? @ cricket_007 – Erz