0

我试图在单击我的表格行时显示一个对话框。我的表格行是动态生成的,有 3 个列。1 个 ImageView 和 2 个 TextView。

我的表格行是由这个循环生成的

for (i = 0; i < name.length; i++) 
{
    tr = new TableRow(this);

    ImageView iv = new ImageView(this);
    tr.setClickable(true);
    tr.setOnClickListener(this);
    try {
        url = new URL(image_url[i]);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    InputStream content = null;
    try {
        content = (InputStream)url.getContent();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Drawable d = Drawable.createFromStream(content , "src"); 
    iv.setImageDrawable(d);
    tr.addView(iv,new LayoutParams(150,150));
    tv2 = new TextView(this);
    tv3 = new TextView(this);

    tv2.setText(name[i]);
    tv3.setText(location[i]);

    tv2.setPadding(10, 0, 0, 0);

    tv3.setPadding(10, 0, 0, 0);
    tr.setPadding(0, 1, 0, 1);

    tr.addView(tv2); // add TextView to row.
    tr.addView(tv3); // add TextView to row.

    tl.addView(tr);
}

我已经尝试了很多方法来使行可点击,但似乎没有任何效果。onclicklistner 方法调用我在代码中定义的 onClick() 方法,但它从未被调用。请让我知道我可以通过什么方式在单击特定行时调用显示对话框方法。谢谢

4

1 回答 1

1

好吧,我怀疑您没有View.OnClickListener在您的类中实现接口,您将其作为“this”传递给tr.setOnClickListener(this);您不应该自己调用 onClick。

你应该做

class MyActivity implements View.OnClickListener {

@Override
public void onClick(View view) {

 // your click event
}

//for loop with dynamically generated rows
public void createTable() {
 // your code with tr.setOnClickListener(this); 
}
于 2012-04-18T01:21:21.067 回答