1. 程式人生 > >popupwindow中ListView item點選事件無效的解決方案

popupwindow中ListView item點選事件無效的解決方案

在Popupwindow中佈局ListView後,如果popupwindow的focusable設定為false 的話,ListView的item的點選事件 出現如下情況:

  • API < 19 :onItemClick 事件無效
  • API >=19:onItemClick 事件有效

為了解決API < 19 點選Item無效的問題,特有以下兩種解決方案:

  1. 方案一:

    設定popupwindow為聚焦即可:setFocusable(true)
    
  2. 方案二:

     前提:想要設定popupwindow為不聚焦:setFocusble(false)
     解決方案:在ListView的Adapter的getView方法中進行item點選事件處理
    
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if(convertView == null){
            ...
        }else{
            ..
        }
    
        //fix API<19 onItemClick not work
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
    public void onClick(View v) { //item點選事件業務邏輯 } }); return convertView; }