如何使用 OnClickListener 从 TextView 获取值?
How can I get the value from TextView with OnClickListener?
我有这段代码可以创建动态 table。
现在我想在每个 TextView 上附加一个 onClick 事件。当我点击 TextView 时,我想获取值并执行一个方法。
所以这是我的代码:
TableLayout ll=(TableLayout) view.findViewById(R.id.displayLinear);
TableRow.LayoutParams rowParams =
new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 0, 1f);
TableRow.LayoutParams itemParams =
new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT, 1f);
int i = 1;
for (Iterator<OperazioniClienti> it = listaOperazioni.iterator(); it.hasNext();) {
OperazioniClienti op = it.next();
TableRow row= new TableRow(getActivity());
//TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT);
//row.setLayoutParams(lp);
row.setLayoutParams(rowParams);
data.setBackgroundResource(R.drawable.shape_edittext_row);
data.setLayoutParams(itemParams);
TextView codFattura = new TextView(getActivity());
codFattura.setText(op.getCodiceFattura().toString());
codFattura.setBackgroundResource(R.drawable.shape_edittext_row);
codFattura.setLayoutParams(itemParams);
Double saldo = op.getSaldo();
TextView importo = new TextView(getActivity());
importo.setLayoutParams(itemParams);
importo.setBackgroundResource(R.drawable.shape_edittext_row);
importo.setGravity(Gravity.RIGHT);
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//to do
}
});
importo.setText("SALDATA");
importo.setTextColor(Color.BLUE);
row.addView(codFattura);
row.addView(importo);
ll.addView(row,i++);
}
}
我已经使用此代码将 onclick 事件附加到所有 TextView,但我不知道如何获取值:
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//to do
}
});
方法的调用者作为参数发送。
您可以从中获取文本,或者使用标签来识别它,等等...
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView myTextView = (TextView)v;
}
});
在您的例子中,View v
,onClick
的参数,与 importo
的视图相同。您只需要转换为特定类型即可访问其成员
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView import = (TextView)v;
}
});
这只是一个想法,不确定:
像这样发起一个列表
List<TextView> botonN = new ArrayList<TextView>();
在您动态创建或从 xml.
中创建后,在此列表中添加您的 TextView
botonN.add(your_textView);
并设置点击动作
for (int index = 0; index < botonN.size(); index++) {
botonN.get(index).setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Here you can get Text
String value = botonN.get(index).getTex().toString();
}
});
}
同样,这只是示例。
使用方法"getText()":
final TextView importo = new TextView(getActivity());
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String text = importo.getText();
}
});
请注意,您需要将 TextView 声明为 "final" 才能从内部访问它 class。
我有这段代码可以创建动态 table。 现在我想在每个 TextView 上附加一个 onClick 事件。当我点击 TextView 时,我想获取值并执行一个方法。 所以这是我的代码:
TableLayout ll=(TableLayout) view.findViewById(R.id.displayLinear);
TableRow.LayoutParams rowParams =
new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 0, 1f);
TableRow.LayoutParams itemParams =
new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT, 1f);
int i = 1;
for (Iterator<OperazioniClienti> it = listaOperazioni.iterator(); it.hasNext();) {
OperazioniClienti op = it.next();
TableRow row= new TableRow(getActivity());
//TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT);
//row.setLayoutParams(lp);
row.setLayoutParams(rowParams);
data.setBackgroundResource(R.drawable.shape_edittext_row);
data.setLayoutParams(itemParams);
TextView codFattura = new TextView(getActivity());
codFattura.setText(op.getCodiceFattura().toString());
codFattura.setBackgroundResource(R.drawable.shape_edittext_row);
codFattura.setLayoutParams(itemParams);
Double saldo = op.getSaldo();
TextView importo = new TextView(getActivity());
importo.setLayoutParams(itemParams);
importo.setBackgroundResource(R.drawable.shape_edittext_row);
importo.setGravity(Gravity.RIGHT);
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//to do
}
});
importo.setText("SALDATA");
importo.setTextColor(Color.BLUE);
row.addView(codFattura);
row.addView(importo);
ll.addView(row,i++);
}
}
我已经使用此代码将 onclick 事件附加到所有 TextView,但我不知道如何获取值:
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//to do
}
});
方法的调用者作为参数发送。 您可以从中获取文本,或者使用标签来识别它,等等...
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView myTextView = (TextView)v;
}
});
在您的例子中,View v
,onClick
的参数,与 importo
的视图相同。您只需要转换为特定类型即可访问其成员
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView import = (TextView)v;
}
});
这只是一个想法,不确定:
像这样发起一个列表
List<TextView> botonN = new ArrayList<TextView>();
在您动态创建或从 xml.
中创建后,在此列表中添加您的 TextView botonN.add(your_textView);
并设置点击动作
for (int index = 0; index < botonN.size(); index++) {
botonN.get(index).setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Here you can get Text
String value = botonN.get(index).getTex().toString();
}
});
}
同样,这只是示例。
使用方法"getText()":
final TextView importo = new TextView(getActivity());
importo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String text = importo.getText();
}
});
请注意,您需要将 TextView 声明为 "final" 才能从内部访问它 class。