如何在android中动态创建的TableLayout中为EditText列表设置Id

时间:2017-05-12 07:02:27

标签: android android-edittext android-tablelayout

我正在以编程方式创建一个混合了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是任何整数值。但它对我的情况没有帮助。

1 个答案:

答案 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();