我在我的适配器中有这个:
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方法? 我将在我的视图(项目视图)中有几个按钮
谢谢
答案 0 :(得分: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
}
答案 1 :(得分: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;
}