0

テーブル行をクリックしてダイアログを表示しようとしています。テーブル行は動的に生成され、3 つの列があります。1 つの ImageView と 2 つの TextViews。

私のテーブル行はこのループによって生成されます

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() メソッドを呼び出しますが、呼び出されることはありません。特定の行をクリックしたときに show dialog メソッドを呼び出す方法を教えてください。ありがとう

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 に答える