читать содержимое данных в TableRow - PullRequest
1 голос
/ 22 октября 2011

У меня есть TableRow, который загружается динамически.Он содержит несколько EditTexts и CheckBoxes.Как получить ввод данных от этих EditTexts и CheckBoxes?

Этот мой код

public void cargarProductos (SQLiteDatabase db) {TableLayout tabla = (TableLayout) findViewById (R.id.Detalle);

        Cursor cProd = db.rawQuery("SELECT * FROM vstEncProductos WHERE IdCliente="+idCliente+" AND Idcategoria="+IdCategoria, null);
        int ValorChk = 0;


        if (cProd.moveToFirst()) {
            do {
                 TableRow row = new TableRow(this);

                 row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
                 row.setId(cProd.getInt(0));

                 ImageButton btnBarCode = new ImageButton(this);
                 btnBarCode.setBackgroundResource(R.drawable.barcodereader48);
                 btnBarCode.setOnClickListener(new OnClickListener() {
                     public void onClick(View v) {
                            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                            intent.setPackage("com.google.zxing.client.android");
                            startActivityForResult(intent, 0);

                     };

                    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
                        if (requestCode == 0) {
                            if (resultCode == RESULT_OK) {
                                String contents = intent.getStringExtra("SCAN_RESULT");
                            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                            showDialog(R.string.result_succeeded, "Format: " + format + "\nContents: " + contents);

                            // Handle successful scan
                            } else if (resultCode == RESULT_CANCELED) {
                                // Handle cancel
                            }
                        }
                        }

                 }); 

                 row.addView(btnBarCode, new TableRow.LayoutParams(0));

                 TextView txtProducto = new TextView(this);
                 txtProducto.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
                 txtProducto.setText(cProd.getString(1));
                 txtProducto.setWidth(230);
                 row.addView(txtProducto, new TableRow.LayoutParams(1));

                 EditText txtPrecio = new EditText(this);
                 txtPrecio.setWidth(130);
                 txtPrecio.setInputType(InputType.TYPE_CLASS_NUMBER);
                 row.addView(txtPrecio, new TableRow.LayoutParams(2));





                 TextView txtPrecioAnt = new TextView(this);
                 txtPrecioAnt.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
                 txtPrecioAnt.setText(cProd.getString(7));
                 txtPrecioAnt.setWidth(115);
                 txtPrecioAnt.setGravity(Gravity.RIGHT);
                 row.addView(txtPrecioAnt, new TableRow.LayoutParams(3));

                 CheckBox chkPresencia = new CheckBox(this);
                 ValorChk=cProd.getInt(4);
                 chkPresencia.setChecked(ValorChk==-1);
                 chkPresencia.setWidth(50);
                 row.addView(chkPresencia, new TableRow.LayoutParams(4));

                 CheckBox chkPrecioPromo = new CheckBox(this);
                 ValorChk=cProd.getInt(4);
                 chkPrecioPromo.setChecked(ValorChk==-1);
                 chkPrecioPromo.setWidth(50);
                 row.addView(chkPrecioPromo, new TableRow.LayoutParams(4));

                 CheckBox chkAlerta = new CheckBox(this);
                 ValorChk=cProd.getInt(4);
                 chkAlerta.setChecked(ValorChk==-1);
                 chkAlerta.setWidth(50);
                 row.addView(chkAlerta, new TableRow.LayoutParams(4));                 

                 tabla.addView(row, new TableLayout.LayoutParams());



            } while (cProd.moveToNext());  
        }

        cProd.close();

Ответы [ 2 ]

0 голосов
/ 17 августа 2012

при создании новых таблиц вы можете сохранить каждый файл в виде многовекторного вектора, например, строк. Тогда вам нужно только получить размер каждого вектора внутри родительского вектора. Мой пример с твоей модификацией коди:

             Vector<Vector<String>> result = new Vector<Vector<String>>();
              Vector<String> vecAux = new Vector<String>();

             TextView txtProducto = new TextView(this);
             txtProducto.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
             txtProducto.setText(cProd.getString(1));
             txtProducto.setWidth(230);
             row.addView(txtProducto, new TableRow.LayoutParams(1));
             vecAux.add(cProd.getString(1));

             EditText txtPrecio = new EditText(this);
             txtPrecio.setWidth(130);
             txtPrecio.setInputType(InputType.TYPE_CLASS_NUMBER);
             row.addView(txtPrecio, new TableRow.LayoutParams(2));


             TextView txtPrecioAnt = new TextView(this);
             txtPrecioAnt.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
             txtPrecioAnt.setText(cProd.getString(7));
             txtPrecioAnt.setWidth(115);
             txtPrecioAnt.setGravity(Gravity.RIGHT);
             row.addView(txtPrecioAnt, new TableRow.LayoutParams(3));
             vecAux.add(cProd.getString(7));

             CheckBox chkPresencia = new CheckBox(this);
             ValorChk=cProd.getInt(4);
             chkPresencia.setChecked(ValorChk==-1);
             chkPresencia.setWidth(50);
             row.addView(chkPresencia, new TableRow.LayoutParams(4));


             CheckBox chkPrecioPromo = new CheckBox(this);
             ValorChk=cProd.getInt(4);
             chkPrecioPromo.setChecked(ValorChk==-1);
             chkPrecioPromo.setWidth(50);
             row.addView(chkPrecioPromo, new TableRow.LayoutParams(4));

             CheckBox chkAlerta = new CheckBox(this);
             ValorChk=cProd.getInt(4);
             chkAlerta.setChecked(ValorChk==-1);
             chkAlerta.setWidth(50);
             row.addView(chkAlerta, new TableRow.LayoutParams(4));                 

             tabla.addView(row, new TableLayout.LayoutParams());

result.add (vecAux);

И получить результаты, ища все позиции вектора:


      String texto = "";

      for (int i = 0; i < result.size(); i++) {
        for (int j = 0; j < result.elementAt(i).size(); j++) {
       texto += result.elementAt(i).elementAt(j) + "\t";
        }
      }

Для получения, если флажок установлен или нет, вы можете получить его по идентификатору (findViewById). Я надеюсь помочь вам, пока пока; -)

0 голосов
/ 22 октября 2011

Я предполагаю, что вы используете какой-то класс адаптера для загрузки данных в вашу таблицу. Когда вы создаете представление, просто назначьте OnClickListener для флажков и TextWatcher для EditTexts. Используйте обратные вызовы из этих классов, чтобы делать то, что вы хотите, с помощью ввода пользователя. Я правильно понимаю ваш вопрос?

...