Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置Id';s表示android中动态创建的TableLayout中的EditText列表_Android_Android Edittext_Android Tablelayout - Fatal编程技术网

如何设置Id';s表示android中动态创建的TableLayout中的EditText列表

如何设置Id';s表示android中动态创建的TableLayout中的EditText列表,android,android-edittext,android-tablelayout,Android,Android Edittext,Android Tablelayout,我正在以编程方式创建一个混合了TextView和EditText的动态表格布局。此文本视图从应用程序的sqlite数据库中获取。TableLayout的最后一列由状态设置为不可见的EditText组成。我想基于对TableLayout行的单击,将TableLayout特定行的EditText的状态设置为可见。onClick之后,EditText应该是可见的,我想将在该EditText中创建的条目存储在数据库中 我的尝试代码如下: List<Details> custo

我正在以编程方式创建一个混合了TextView和EditText的动态表格布局。此文本视图从应用程序的sqlite数据库中获取。TableLayout的最后一列由状态设置为不可见的EditText组成。我想基于对TableLayout行的单击,将TableLayout特定行的EditText的状态设置为可见。onClick之后,EditText应该是可见的,我想将在该EditText中创建的条目存储在数据库中

我的尝试代码如下:

        List<Details> customerDetailList = db.getAllCustomers(routeId);

        Details customerDetails;

        TableLayout stk = (TableLayout) findViewById(R.id.tableLayout1);

        stk.removeAllViews();

        TableRow tbrow0 = new TableRow(this);
        TextView tv0 = new TextView(this);
        tv0.setText("Sl.No.");
        tv0.setTextColor(Color.BLACK);
        tv0.setTypeface(null, Typeface.BOLD);
        //tv0.setTextSize(20);
        tv0.setPadding(5, 5, 5, 5);
        tbrow0.addView(tv0);

        TextView tv1 = new TextView(this);
        tv1.setText(" Patron ID ");
        tv1.setTextColor(Color.BLACK);
        tv1.setTypeface(null, Typeface.BOLD);
        //tv1.setTextSize(20);
        tv1.setPadding(5, 5, 5, 5);
        tbrow0.addView(tv1);

        TextView tv2 = new TextView(this);
        tv2.setText(" Name ");
        tv2.setTypeface(null, Typeface.BOLD);
        //tv2.setTextSize(20);
        tv2.setTextColor(Color.BLACK);
        tv2.setPadding(5, 5, 5, 5);
        tv2.setGravity(Gravity.CENTER);
        tbrow0.addView(tv2);

        TextView tv3 = new TextView(this);
        tv3.setText(" Requested ");
        tv3.setTextColor(Color.BLACK);
        tv3.setTypeface(null, Typeface.BOLD);
        //tv3.setTextSize(20);
        tv3.setPadding(5, 5, 5, 5);
        tv3.setGravity(Gravity.CENTER);
        tbrow0.addView(tv3);

        TextView tv4 = new TextView(this);
        tv4.setText(" Supplied ");
        tv4.setTypeface(null, Typeface.BOLD);
        //tv4.setTextSize(20);
        tv4.setTextColor(Color.BLACK);
        tv4.setPadding(5, 5, 5, 5);
        tbrow0.addView(tv4);


        tbrow0.setBackgroundResource(R.color.colorLightGray);
        stk.addView(tbrow0);


        for (int row = 0, j = 1; row < customerDetailList.size(); row++, j++) {
            customerDetails = customerDetailList.get(row);
            TableRow tbrow = new TableRow(this);
            tbrow.setClickable(true);
            final TextView t1v = new TextView(this);
            t1v.setText("" + j);
            t1v.setTextColor(Color.BLACK);
            t1v.setGravity(Gravity.CENTER);
            t1v.setPadding(5, 5, 5, 5);
            tbrow.addView(t1v);
            TextView t2v = new TextView(this);
            t2v.setText("" + customerDetails.getcId());
            t2v.setTextColor(Color.BLACK);
            t2v.setGravity(Gravity.CENTER);
            t2v.setPadding(5, 5, 5, 5);
            tbrow.addView(t2v);
            TextView t3v = new TextView(this);
            t3v.setText("" + customerDetails.getName());
            t3v.setTextColor(Color.BLACK);
            t3v.setGravity(Gravity.CENTER);
            t3v.setPadding(5, 5, 5, 5);
            tbrow.addView(t3v);
            TextView t4v = new TextView(this);
            t4v.setText("" + customerDetails.getRequested());
            t4v.setTextColor(Color.BLACK);
            t4v.setGravity(Gravity.CENTER);
            t4v.setPadding(5, 5, 5, 5);
            tbrow.addView(t4v);
            final EditText t5v = new EditText(this);
          //  t5v.setHint(0);
            t5v.setId(j);
            t5v.setVisibility(View.INVISIBLE);
            t5v.setTextColor(Color.BLACK);
            t5v.setGravity(Gravity.CENTER);
            t5v.setPadding(5, 5, 5, 5);
            tbrow.addView(t5v);

            tbrow.setBackgroundResource(R.color.colorWhite);

        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
                t5v.setVisibility(View.VISIBLE);

                Toast.makeText(getApplicationContext(),tv1.getText().toString(),Toast.LENGTH_SHORT).show();

            }
        });
            stk.addView(tbrow);


        }
List customerDetailList=db.getAllCustomers(routeId);
详情客户详情;
TableLayout stk=(TableLayout)findviewbyd(R.id.tableLayout1);
stk.removeallview();
TableRow tbrow0=新的TableRow(此);
TextView tv0=新的TextView(此);
tv0.setText(“序号”);
tv0.setTextColor(Color.BLACK);
tv0.setTypeface(null,Typeface.BOLD);
//tv0.setTextSize(20);
tv0.setPadding(5,5,5,5);
tbrow0.addView(tv0);
TextView tv1=新的TextView(本);
tv1.setText(“用户ID”);
tv1.setTextColor(Color.BLACK);
tv1.setTypeface(null,Typeface.BOLD);
//tv1.setTextSize(20);
tv1.设置填充(5,5,5,5);
tbrow0.addView(tv1);
TextView tv2=新的TextView(本);
tv2.setText(“名称”);
tv2.setTypeface(null,Typeface.BOLD);
//tv2.setTextSize(20);
tv2.setTextColor(Color.BLACK);
tv2.设置填充(5,5,5,5);
tv2.setGravity(重心);
tbrow0.addView(tv2);
TextView tv3=新的TextView(本);
tv3.setText(“被请求”);
tv3.setTextColor(Color.BLACK);
tv3.setTypeface(null,Typeface.BOLD);
//tv3.setTextSize(20);
tv3.setPadding(5,5,5,5);
tv3.setGravity(重心);
tbrow0.addView(tv3);
TextView tv4=新的TextView(本);
tv4.setText(“已提供”);
tv4.setTypeface(null,Typeface.BOLD);
//tv4.setTextSize(20);
tv4.setTextColor(Color.BLACK);
tv4.设置填充(5,5,5,5);
tbrow0.addView(tv4);
tbrow0.setBackgroundResource(R.color.colorLightGray);
stk.addView(tbrow0);
对于(int row=0,j=1;row
我发现有人问过类似的问题
其中,提供了利用editText.setId(i)的解决方案,其中i是任意整数值。但这对我的情况没有帮助。

您可以在xml文件中创建一个自定义id,并使用
setId()
方法设置该id。以下是执行此操作的步骤:

1) 在
res/values
目录下创建文件
ids.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="my_custom_id" type="id" />
</resources>
这应该能奏效

编辑:如果您不知道要创建的视图数量,并且无法使用xml文件中的id,也可以执行以下操作:

et.setId(View.generateViewId());

generateViewId()
方法为您创建一个随机唯一id。

我按照以下步骤为编程创建的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:使用

 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:编辑文本中输入的数据可以通过

t5v = (EditText) findViewById(idOfEditText);
String value = t5v.getText().toString();
Toast.makeText(this, "You entered: "+value, Toast.LENGTH_SHORT).show();

谢谢你的回复。但我想创建EditText列表,并以编程方式将ID设置为它。我无法使用xml文件设置EditText的id。因为我不知道可以创建的EditText的数量,因为它取决于我从中提取以显示reco的表中存在的记录的数量
t5v = (EditText) findViewById(idOfEditText);
String value = t5v.getText().toString();
Toast.makeText(this, "You entered: "+value, Toast.LENGTH_SHORT).show();