以下是我如何使用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();
}
}
}
});
答案 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();
}
};