2010-11-20 113 views
0

我已经在我的适配器:获取位置后点击按钮,在列表视图

public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ViewHolder holder; 
     if(convertView==null) 
     { 
      convertView = myInflater.inflate(R.layout.list, null);   
      holder = new ViewHolder(); 
      holder.text01 = (TextView) convertView.findViewById(R.id.Text01); 
      ((Button)convertView.findViewById(R.id.ListButonPlus)).setOnClickListener(this); 
      convertView.setTag(holder); 
     }else 
     { 
      holder = (ViewHolder) convertView.getTag();   
     } 
      return convertView; 
     } 

这:

public void onClick(View v) 
{ 
    Toast.makeText(v.getContext(), "pouette",1000).show(); 
} 

我努力得到的,更项目的位置谁包含我的按钮。

如何将getView方法中存在的位置变量传递给我的onClick方法? 我有几个按钮,在我看来(项目视图)

谢谢

回答

1

好吧,我发现,我通过我的位置到ViewHolder
我从视图或parrent视图的标签获得ViewHolder通过递归函数。
有什么不同的方法吗?

public static class ViewHolder 
    { 
     private TextView text01; 
     public int position; 
    } 
    public ViewHolder getViewHolder(View v) 
    { 
     if(v.getTag() == null) 
     { 
      return getViewHolder((View)v.getParent()); 
     } 
     return (ViewHolder)v.getTag(); 
    } 
    public void onClick(View v) { 

     ViewHolder vh = getViewHolder(v); 
       vh.position // Here I get position 
     } 
+0

好的方法来获得位置。真的有帮助! +1 – Jean 2013-10-18 14:34:25

0

我知道这个帖子是老了,但是这可能帮助一些人:

在我adapeter的getView:

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     ContactHolder holder = null; 

     final ContactRow ContactRow = ContactRowList.get(position); 

     if(row == null) 
     { 

     ... 
     holder.delete = (ImageButton)row.findViewById(R.id.btn_contact_delete); // my button inside the item 

      holder.delete.setTag(position); 
     ... 
     } 

这是我的听众此按钮

holder.delete.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v){ 

       int position=(Integer)v.getTag(); 
        ((MainActivity)context).deleteContact(position,true); // call the delete function form the main activity 
      } 
     }); 

我的持有人

static class ContactHolder 
{ 
    ... 
    ImageButton delete; 
} 
相关问题