1

我有列表视图和每一行有多个可点击区域。在bindView中(我使用CursorAdapter),我为每个可点击区域设置onClickListener,一切正常。当我点击查看,并在同一时间notifyDataSetChanged被称为(或光标改变)列表视图 - onClickListener的onClick呼吁重用视图

看来,当我点击第一个项目出现

问题,但OnClickListener被调用之前,查看被重用(bindView是调用)第二项,onClickListener在第二项调用。 我唯一的想法是触发后,但在onClickListener被调用之前,视图被重用。任何想法如何解决它或什么可能是错的?

编辑:如果点击的观点是内滚动有onTouch和的onClick之间180ms的延迟,以找出是否是点击或滚动。因此,如果在onTouch和onClick之间重用视图,则onClick会在重用(错误)行上调用。

几乎一样可以更容易地与OnLongClickListener再现。

+0

请添加代码。 – Raanan

回答

0

您可能想让您的onClickListener为私人。

public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    ViewHolder holder = new ViewHolder(); 
    View view = inflater.inflate(R.layout.yourrow, parent, false); 


    holder.your_textview = (TextView) view.findViewById(R.id.tv_your_textviewfield); 
    holder.your_textview.setOnClickListener(mMoves_OnClickListener); 
    holder.position = cursor.getPosition(); 
    bindView(view, context, cursor); 
    view.setTag(holder); 
    return view; 
} 

private OnClickListener mMoves_OnClickListener = new OnClickListener() { 
    public void onClick(View v) { 

     ViewHolder holder = (ViewHolder) ((View) v.getParent()).getTag(); 

     switch (v.getId()) { 
     case R.id.tv_your_textviewfield: 
      ((OnMoveScoreSelectedListener) context).onMoveScoreClickSelected(); 
      break; 
     case ... 
     } 
    } 
}; 
+0

谢谢,但这没有帮助 – vandzi