0

当我单击我的ImageView时,它不会返回单击图像的 ID,而是返回最后添加的图像。有13,总是返回我12(0-12)。我不明白我做错了什么。这是我的代码:

ImageView imgBook = null;
tlList = (TableLayout) findViewById(R.id.tl_list1);

public void loadList(){
    for (int o = 0; o < studies.size(); o++) {
        LayoutInflater li_est = (LayoutInflater) getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);

        if (LoginVO.app==0) {
            vEst = li_est.inflate(R.layout.details1, null);
        } else if (LoginVO.app==1) {
            vEst = li_est.inflate(R.layout.details2, null);
        } else if (LoginVO.app==2) {
            vEst = li_est.inflate(R.layout.details3, null);
        }

        imgBook = (ImageView) vEst.findViewById(R.id.est_img_libro);
        imgBook.setId(o);
        tlList.addView(vEst);

        imgBook.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                idColumn=imgBook.getId();
                Log.e("TAG","ID COLUMN: "+idColumn);
            }
        });

idColumn总是12,数组的总大小。

问题是什么?

4

2 回答 2

1

你需要做这样的事情:

imgBook.setTag(o);
        imgBook.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                int id = Integer.parseInt(v.getTag().toString());
            }
        });
于 2013-02-25T11:30:18.267 回答
0

您需要了解导致该事件的视图。

ImageView imgViewClicked = (ImageView) v;

否则,您只是使用 imgBook 变量,该变量在 for 循环中始终具有 o 的最后一个值。

于 2013-02-25T10:54:33.113 回答