getView()方法初始化所有控件,但是在item内部控件的点击事件中点击的条目数与当前Item的条目数不一定一致,所以创建监听器继承OnClickListener,当点击内部控件时,才获取某条目的索引:
iv:点击的内部控件
iv = holder.praise; holder.praise.setOnClickListener(new MyPriseListener(i, iv)); return view; } class MyPriseListener implements View.OnClickListener { int index; ImageView iv; public MyPriseListener(int position, ImageView v) { this.index = position; this.iv = v; } @Override public void onClick(View view) { ActivitysInfo a = mActivityInfos.get(index); MyNeed holder1 = new MyNeed(a, MyApplication.currUser, flag, iv); dealPraise(holder1, holder.praise);//自定义的处理方法 flag = !flag; } }