从layoutInflater中的ImageView获取Id()

时间:2013-02-25 10:51:06

标签: android layout-inflater

当我点击我的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 ,即数组的总大小。

有什么问题?

2 个答案:

答案 0 :(得分:1)

你需要做这样的事情:

imgBook.setTag(o);
        imgBook.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                int id = Integer.parseInt(v.getTag().toString());
            }
        });

答案 1 :(得分:0)

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

ImageView imgViewClicked = (ImageView) v;

否则你只是使用imgBook变量,它在for循环中总是有o的最后一个值。