【发布时间】:2016-03-23 01:02:35
【问题描述】:
我正在尝试学习如何以编程方式添加 TextView,但我找到了很多关于这个主题的答案。我有以下代码工作:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout llCommand1 = (LinearLayout) findViewById(R.id.LL_Main);
llCommand1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mtAdd_Register();
}
});
}
public void mtAdd_Register(){
View llColumn1 = findViewById(R.id.Column1);
TextView tvData1 = (TextView) getLayoutInflater().inflate(R.layout.tv_red, null);
sData = "user input" //I'll write a method to get user input
tvData1.setText(sData);
tvData1.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.MATCH_PARENT,30));
((LinearLayout) llColumn1).addView(tvData1);
}
“LL_Main”是一个水平LinearLayout,有6个子垂直LinearLayouts(Column1到Column6),“tv_red”用于将重力设置为“center”,背景颜色设置为“red”(带边框,来自可绘制资源)。
此代码以某种方式起作用,因为当我在运行时单击 LL_Main 时,我按预期添加了 TextViews。对于这个测试,TextView 仅在 Column1 中创建,但稍后我将有一个带有 id 的数组和一个循环来为每列创建一个 TextView。
但是我想要的是当我再次运行应用程序时将这些添加的 Textviews 放置到位,我的意思是,起初我的应用程序没有任何数据要显示,我的目标是在用户添加并保留注释触摸屏幕,因此用户每次运行应用程序时都会看到之前添加的 TextViews。
我是否走在正确的道路上?还是应该将用户输入保存到 JSON 文件并在每次运行应用程序时检索它?但是即使我必须将用户输入保存在 JSON 文件中,如何保留 TextViews 以显示保存的数据?
我只是想:当我第一次运行应用程序时,我可以获得输入并添加 5 个 TextView。我保存 JSON 文件,当我再次运行应用程序时,我必须检查文件有多少数据。所以我的代码应该根据需要添加尽可能多的 TextView 来显示检索到的数据。
是吗?......
编辑:
为了更清楚一点:假设我的布局中没有任何内容,而我的 activity_main.xml 只显示一个空屏幕。当用户触摸屏幕时,会添加一个带有文本“用户输入”的 TextView。他触摸屏幕的次数就会发生这种情况。
但是当他关闭应用程序并再次运行它时............所有的 TextViews 都消失了。每次用户运行应用程序时,他都会看到一个空白屏幕。我需要以前的 TextViews 在那里............
【问题讨论】:
标签: android json textview programmatically-created