OnItemCLickListener not working in listview

前端 未结 24 2271
悲&欢浪女
悲&欢浪女 2020-11-22 11:21

Activity class code:

conversationList = (ListView)findViewById(android.R.id.list);
ConversationArrayAdapter conversationArrayAdapter=new  Conver         


        
24条回答
  •  独厮守ぢ
    2020-11-22 11:49

    I've tried all the above and NOTHING worked.

    I solved the problem as follows:

    First I define a custom Button called ListButton

    public class ListButton extends android.widget.Button
    {
    
    private ButtonClickedListener clickListener;
    
    public ListButton(Context context)
    {
        this(context, null);
    }
    
    public ListButton(Context context, AttributeSet attrs)
    {
        this(context, attrs, 0);
    }
    
    public ListButton(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
    }
    
    public void setClickListener(ButtonClickedListener listener) {
        this.clickListener = listener;
    }
    
    @Override
    public boolean isInTouchMode() {
        return true;
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
    
        return false;
    }
    
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
    
        switch (event.getAction()) 
          {
              case MotionEvent.ACTION_DOWN:
                  break;
              case MotionEvent.ACTION_UP:
    
                  eventClicked();
    
                  break;
              case MotionEvent.ACTION_CANCEL:
                  break;
              case MotionEvent.ACTION_MOVE:
                  break;
              default :
    
          }
        return true;
    }
    
    private void eventClicked() {
        if (this.clickListener!=null) {
            this.clickListener.ButtonClicked();
        }
    }
    
    }
    

    The XML looks like:

    
    

    Then I define my own ButtonClicked Listener interface:

    public interface ButtonClickedListener {
        public void ButtonClicked();
    }
    

    Then I use my own listener just as if it was the normal OnClickListener:

    final ListButton cancelButton = (ListButton) viewLayout.findViewById(R.id.cancel_button);
    
        cancelButton.setClickListener(new ButtonClickedListener() {
    
            @Override
            public void ButtonClicked() {
                //Do your own stuff here...
            }
    
        });
    

提交回复
热议问题