как получить текст textview в динамически генерируемой таблице? - PullRequest
2 голосов
/ 04 апреля 2011

я написал что-то вроде этого ...

TableRow  tr1;  
    TableRow  tr2;  
    TextView txt9;
    ...
    TableLayout tl = (TableLayout)findViewById(R.id.myTableLayout);
    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width, LayoutParams.FILL_PARENT);

    for (int i = 0; i < strarr.length-1; i++)
    {
    strinarr = fun1.split(strarr[i].trim(),"^");
    tr1 = (TableRow) new TableRow(this);
    txt1=new TextView(this);
    txt9.setText(strinarr[0]);
    txt9.setBackgroundColor(intblue);
    txt9.setTextColor(intwhite);
    txt9.setClickable(true);
    txt9.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
    {
        Log.i("pagename",strpagename);
        String currenttext = txt9.getText().toString());
    }
    }
    });
    tr1.addView(txt9);
    tl.addView(tr1,new TableLayout.LayoutParams(layoutParams));
    }

Я могу получить текст по клику, но глупо то, что я получаю текст последнего текстового просмотра в таблице по всем событиям клика по текстовому просмотру ... если кто-нибудь может сказать мне, как поймать текст текстового просмотра при фокусировке или прикосновении это было бы действительно помочь полностью ...

Ответы [ 3 ]

12 голосов
/ 04 апреля 2011

изменить String currenttext = txt9.getText().toString()); на String currenttext = ((TextView)v).getText().toString());

0 голосов
/ 16 марта 2012
ArrayList qty = new ArrayList();
for(int i = 1; i <= 10; i++)
{
  qty.add(i);
}

for(int i = 0; i < 5; i++)
{
  TableRow tr = new TableRow(this);
  Spinner tvQtySpinner = new Spinner(this);
  tvQtySpinner.setOnItemSelectedListener(this);
  ArrayAdapter<String> aa =
    new ArrayAdapter<String> this, android.R.layout.simple_spinner_item, qty);
  aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  tvQtySpinner.setAdapter(aa);
  tr.addView(tvQtySpinner);

  TextView tvRate = new TextView(this);
  tvRate.setText(value.getPrice().toString());
  tvRate.setTextColor(Color.YELLOW);
  tr.addView(tvRate);
}

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id)
{       
  Integer value = (Integer) parent.getItemAtPosition(pos);
  Float result = value*50;
  tvRate.setText(String.valueOf(result));
}

Здесь у меня 5 строк, в каждой строке 5 динамических счетчиков и текстовые представления.Я получаю выбранное значение из счетчика и выполняю вычисления и пытаюсь установить этот вычисленный результат в определенных строках TextView.Но когда я установлю вычисленное значение в TextView, оно будет установлено в последних строках TextView.

0 голосов
/ 04 апреля 2011

Вы, вероятно, должны вести список идентификаторов в таблице и список соответствующих текстов.Когда пользователь нажимает на виджет с указанным идентификатором, просто найдите текст в текстовом списке и установите его.

...