1

从下面的代码(在 ExpandableView 适配器中)单击图像 (iv) 后如何获取组 ID。如果用户单击组列表,我想像往常一样展开它,但是如果用户单击组列表中的图像,我想调用其他一些操作,并且需要 SampleGroup 的 id。

public View getGroupView(int groupPosition, boolean isExpanded, View converView, ViewGroup parent){

     SampleGroup group = (SampleGroup)getGroup(groupPosition);

     if(convertView == null){
          LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          convertView = layoutInflater.inflate(R.layout.list_group, null);
     }

     ImageView iv = (ImageView)convertView.findViewById(R.id.some_iv):
     TextView tv = (TextView)convertView.findViewById(R.id.some_tv);

     iv.setImageDrawable(group.getImage());
     iv.setOnClickListener(onClickLintener);
     tv.setText(group.getText());
}


OnClickListener onClickLintener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        //How to get group id here???
    }
};

public class SampleGroup{
     private int id;
     private String name;
     private Drawable image;

     public SampleGroup(int id, String name, Drawable image){
          this.id = id;
          this.name = name;
          this.image = image;
     }

     public int getId(){
          return id;
     }

     public void setId(int id){
          this.id = id;
     }

     public String getName(){
          return name;
     }

     public void setName(String name){
          this.name = name
     }

     public Drawable getImage(){
          return image;
     }

     public void setImage(Drawable image){
          this.image = image
     }
}
4

1 回答 1

3

试试这个:

public View getGroupView(int groupPosition, boolean isExpanded, View converView, ViewGroup parent){
  ......
  ImageView iv = (ImageView)convertView.findViewById(R.id.some_iv);
  iv.setTag(group.id);
}

然后

OnClickListener onClickLintener = new OnClickListener() {
  @Override
  public void onClick(View v) {
      //How to get group id here???
      int groupId = (Integer) v.getTag();
  }
};
于 2012-10-19T04:53:53.877 回答