当我们触摸它并将TextView添加到LinearLayout时,如何检索TextView值?

时间:2011-07-11 12:54:16

标签: android textview

以下是我如何使用LinearLayout为表格布局添加动态TextView的代码。

table_personalData.removeAllViews();
int i=0;
for(String header : headerDetail){
TextView label=new TextView(this);
TextView value=new TextView(this);
label.setTextAppearance(this, R.style.TextBase);
value.setTextAppearance(this, R.style.TextBase);
label.setText(String.format("%s:", header));
value.setText(String.format("%s", lead.data[i]==null?"":lead.data[i]));
i++;
LinearLayout rowview=new LinearLayout(this);
rowview.setOrientation(0);
rowview.setLayoutParams(new  LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
                rowview.addView(label);
                rowview.addView(value);
                table_personalData.addView(rowview);

}

通过上面的代码,我得到了我的表格布局,其中包含动态添加的textview。 这里我使用Liner Layout在One Row中添加了两个textview。

headerDetail is a ArrayList<String> headerDetail
lead.data[i] i used this to get my values for particular label.

现在这一切对我来说都很好,我的问题是什么 现在我想做一件事,当我们单击我的LinearLayout的TextView之一时,我想动态地使用TextView。 所以最后我的问题是当我们触摸或点击任何在Linearlayout中的文本视图并且LinearLayout在TableLayout中时,检索textview值。

任何人都知道我应该怎么做。 我也尝试下面的东西,但我没有得到我可以从下面的代码获得TextView值。

table_personalData.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            for(int i=0;i<table_personalData.getChildCount();i++){


                //CharSequence desc=table_personalData.getChildAt(i).getContentDescription();

                //Log.v("log_tag", "the values are"+ desc);

            }

        }
    });

修改

如果你想触摸TextView的价值,那我写下面有两种方式:

  value.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            TextView txt;
                            txt=(TextView)findViewById(v.getId());
                            String tempEmail;
                            tempEmail=txt.getText().toString().trim();
                            String aEmailList[]={tempEmail};
                            pattern=Pattern.compile(EMAIL_PATTERN);

                            if(validate(tempEmail)){
                                Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
                                emailIntent.setType("plain/text");
                                emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,aEmailList ); 
                                startActivity(emailIntent);
                            }else{
                                pattern=Pattern.compile(PHONE_No_PATTERN);
                                if(validate(tempEmail)){
                                    tempEmail=tempEmail.replaceAll("[^\\d]", "");
                                    String uri="tel:" +tempEmail;
                                    Intent mIntent=new Intent(Intent.ACTION_CALL);
                                    mIntent.setData(Uri.parse(uri));
                                    startActivity(mIntent);
                                }else{
                                    //Toast.makeText(LeadDetailActivity.this, "Please Touch on Email or Mo:Number", Toast.LENGTH_SHORT).show();
                                }
                            }
                        }
                    });

1 个答案:

答案 0 :(得分:1)

1)创建你想要多少文本视图,但为每一个设置id,并为所有

设置相同的点击监听器
  

TextView value1 = new TextView(this);
  value1.setid(1);
  value1.setOnClickListener(clickListener);

     

TextView value2 = new TextView(this);
  value1.setid(2);
  value2.setOnClickListener(clickListener);

     

TextView value3 = new TextView(this);    value3.setid(3);
  value3.setOnClickListener(clickListener);

2)第二次创建一个onclick监听器,在这个监听器内你将获得所有cliks。所以基于视图id你可以动态地做任何事情

  

OnClickListener clickListener = new OnClickListener(){
      public void onClick(查看v){
              int id = v.getId();
          }
      };