我正在以编程方式创建一个混合了TextView和EditText的动态TableLayout。此TextView是从应用程序的sqlite数据库中获取的。 TableLayout的最后一列由EditText组成,其状态设置为不可见。我想基于TableLayout的一行onClick,将TableLayout特定行的EditText的状态设置为 Visible 。在onClick之后,EditText应该是可见的,我想将该editText中的条目存储在数据库中。
我的尝试代码如下:
$timeout
我在How to Set Id in EditText programmatically in Android中发现了类似的问题 和Android: Set Edit text or text view id Programmatically其中,提供的解决方案是使用editText.setId(i),其中i是任何整数值。但它对我的情况没有帮助。
答案 0 :(得分:0)
我按照以下步骤设置了以编程方式创建的EditText的ID,并检索在edittext中输入的数据。
步骤1:将edittext和int变量的全局声明设为
int idOfEditText;
EditText t5v;
步骤2:将editText的Id设置为
t5v = new EditText(this);
t5v.setId(Integer.valueOf(j)); //I tried with just j being declared as t5v.setId(j); but it was showing up error with the suggestion as Expected resource of type id in android studio. I have made int variable **j** to loop till list.size()
步骤3:使用
获取行的id onclick over the table tbrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TableRow tr1=(TableRow)v;
TextView tv1= (TextView)tr1.getChildAt(0);
//Get the integer value of tv1 to make the corresponding edittext to be visible
idOfEditText = Integer.valueOf(tv1.getText().toString());
t5v = (EditText) findViewById(idOfEditText);
}
});
步骤4:可以通过
检索在EditText中输入的数据t5v = (EditText) findViewById(idOfEditText);
String value = t5v.getText().toString();
Toast.makeText(this, "You entered: "+value, Toast.LENGTH_SHORT).show();