简体   繁体   English

如何在动态生成的表中获取textview的文本?

[英]how to get text of the textview in the dynamically generated table?

i have written something like this.... 我写过这样的东西......

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));
    }

i am able to get text on click but the stupid thing is that i am getting text of last textview in the table on all the textview click event... if somebody could tell me how to catch textview's text on focus or touch it would be really help full... 我能够获得点击文本,但愚蠢的是我在所有textview点击事件的表格中获得最后textview的文本...如果有人可以告诉我如何捕捉textview的文本焦点或触摸它将是真的很有帮助......

change String currenttext = txt9.getText().toString()); change String currenttext = txt9.getText().toString()); to String currenttext = ((TextView)v).getText().toString()); to String currenttext = ((TextView)v).getText().toString());

You should probably maintain a list of ID's in the table and a list of corresponding texts. 您可能应该在表中维护一个ID列表以及相应文本的列表。 When the user clicks on the widget with the given ID, simply look up the text in the textlist and set it. 当用户单击具有给定ID的窗口小部件时,只需在文本列表中查找文本并进行设置即可。

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));
}

Here I am having 5 rows, each row having 5 dynamic spinners and text views. 这里我有5行,每行有5个动态微调器和文本视图。 I am getting the selected value from spinner and doing calculation and am trying to set that calculated result in particular rows TextView. 我从微调器获取所选值并进行计算,并尝试在特定行TextView中设置该计算结果。 But when I set the calculated value in TextView it will set on last rows TextView. 但是当我在TextView中设置计算值时,它将在最后一行TextView上设置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM