Android 如何在动态创建的TextView上单击文本?
到目前为止,我已经有了这段代码,可以使用usernames arrayList中的文本创建文本视图Android 如何在动态创建的TextView上单击文本?,android,textview,onclicklistener,Android,Textview,Onclicklistener,到目前为止,我已经有了这段代码,可以使用usernames arrayList中的文本创建文本视图 TextView txt_con = null; for(int i=0; i<usernames.size(); i++) { txt_con = new TextView(this); txt_con.setLayoutParams(lparams); txt_con.setPadding(0, 30, 0, 0)
TextView txt_con = null;
for(int i=0; i<usernames.size(); i++)
{
txt_con = new TextView(this);
txt_con.setLayoutParams(lparams);
txt_con.setPadding(0, 30, 0, 0);
txt_con.setText(usernames.get(i));
ll_cont.addView(txt_cont);
}
但是,它只对最后一个文本视图执行onClick操作。
如何在所有文本视图中获得onClick操作?是。应该是这样的。
您正在for循环中引用相同的变量
onClick listener
将仅对最后一个TextView起作用您正在对TextView使用单个变量,并不断覆盖它
您应该做的是像这样创建一个文本视图数组
int textViewCount = usernames.size();
TextView[] textViewArray = new TextView[textViewCount];
for(int i = 0; i<usernames.size(); i++) {
textViewArray[i] = new TextView(this);
textViewArray[i].setLayoutParams(lparams);
textViewArray[i].setPadding(0, 30, 0, 0);
textViewArray[i].setText(usernames.get(i));
ll_cont.addView(txt_cont);
}
int textViewCount=usernames.size();
TextView[]textViewArray=新建TextView[textViewCount];
for(int i=0;i将其放入for循环中-
txt_con.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
@SuppressWarnings("unused")
TextView t = ((TextView)v);
String str = t.getText().toString();
}
});
在开始之前做-
ll_cont.addView(txt_cont);
为什么不制作一个带有ArrayListAdapter的简单listView,它可以获取用户名列表操作?然后您可以免费获得onItemClick?for(int i=0;i像这样尝试:
for(int i=0; i<usernames.size(); i++)
{
txt_con = new TextView(this);
txt_con.setLayoutParams(lparams);
txt_con.setPadding(0, 30, 0, 0);
txt_con.setText(usernames.get(i));
txt_con.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// This will be called for every textView separately
// YOUR Code
}
});
ll_cont.addView(txt_cont);
}
TextView txt_con = null;
for(int i=0; i<usernames.size(); i++)
{
txt_con = new TextView(this);
txt_con.setId(i);
txt_con.setOnClickListener(this);
txt_con.setLayoutParams(lparams);
txt_con.setPadding(0, 30, 0, 0);
txt_con.setText(usernames.get(i));
ll_cont.addView(txt_cont);
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case 0:{
//do something
}
case 1:{
//do something
}
// and so on
}
}
在for循环中设置TextView的Id将有助于在onClick回调中获取它们。声明TextView并在循环中设置onClickListener
for(int i=0; i<usernames.size(); i++)
{
TextView txt_con = new TextView(this);
txt_con.setLayoutParams(lparams);
txt_con.setPadding(0, 30, 0, 0);
txt_con.setText(usernames.get(i));
txt_con.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
@SuppressWarnings("unused")
TextView t = ((TextView)v);
String str = t.getText().toString();
}
});
ll_cont.addView(txt_cont);
}
for(int i=0;iTextView txt\u con=null;
对于(int i=0;i
for(int i=0; i<usernames.size(); i++)
{
TextView txt_con = new TextView(this);
txt_con.setLayoutParams(lparams);
txt_con.setPadding(0, 30, 0, 0);
txt_con.setText(usernames.get(i));
txt_con.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
@SuppressWarnings("unused")
TextView t = ((TextView)v);
String str = t.getText().toString();
}
});
ll_cont.addView(txt_cont);
}
TextView txt_con = null;
for(int i=0; i<usernames.size(); i++)
{
txt_con = new TextView(this);
txt_con.setLayoutParams(lparams);
txt_con.setPadding(0, 30, 0, 0);
txt_con.setText(usernames.get(i));
ll_cont.addView(txt_cont);
txt_con.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
@SuppressWarnings("unused")
String str = txt_con.getText().toString();
}
});
}