到目前为止,我有这个代码,用来自usernames arrayList的文本创建TextViews。
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);
}
和onClickListener
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();
}
});
但是,它只需要在最后一个TextView上执行onClick操作。 如何在所有TextView中获取onClick操作?
答案 0 :(得分:4)
class user extends database {
//code user class goes here
}
答案 1 :(得分:1)
您正在为TextViews使用单个变量,并继续覆盖它。
你应该做的是像这样创建一个文本视图数组
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);
}
答案 2 :(得分:1)
将此内容放入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);
答案 3 :(得分:1)
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);
}
答案 4 :(得分:1)
声明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);
}
答案 5 :(得分:0)
是的。它应该是那样的。
你在for循环中是referencing the same variable
。 onClick listener
仅适用于最后一个TextView
答案 6 :(得分:0)
为什么不使用带有用户名列表操作的ArrayListAdapter创建一个简单的listView?然后你免费获得onItemClick?
答案 7 :(得分:0)
试试这样:
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);
}
从您的Activity实现OnClickListener并执行以下操作:
@Override
public void onClick(View v) {
switch(v.getId())
{
case 0:{
//do something
}
case 1:{
//do something
}
// and so on
}
}
在for循环中设置TextView的Id将有助于在onClick回调中获取它们。