Android 如何在动态创建的TextView上单击文本?

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)

到目前为止,我已经有了这段代码,可以使用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);
        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;i
TextView 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();
    }
});
}