2017-01-16 23 views
2

後,情況是這樣的:我有一些項目列表視圖。每個項目內都有兩個可點擊的視圖,只有在用戶點擊父項目後纔會顯示。Onclicklistener的ListView項內的子視圖,僅啓動第二次onitemclicklistener

它的工作原理是這樣的:

productList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(final AdapterView<?> parent, final View view, final int position, long id) { 

       TextView txtAdd = (TextView) view.findViewById(R.id.txt_add_units); 
       txtAdd.setVisibility(View.VISIBLE); 
       txtAdd.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         ... 
        } 
       }); 

       TextView txtRemove = (TextView) view.findViewById(R.id.txt_remove_units); 
       txtRemove.setVisibility(View.VISIBLE); 
       txtRemove.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         ... 
        } 
       }); 

       basketProductsListAdapter.notifyDataSetChanged(); 

      } 

     }); 

第一次ListView項被點擊,其txtAdd和txtRemove子視圖中顯示,然後,如果用戶點擊它們,則執行其onclickListener內部代碼。

只出現在第一ListView項的問題。第一次被點擊txtAdd和txtRemove顯示,但第一次用戶點擊過孩子的意見,他們的父母的ItemClickListener被再次被解僱,那麼孩子的意見(txtAdd和txtRemove)沒有收到clickListener。接下來的時間他們是完美的工作。奇怪的是,它只發生在listView中的第一個項目上。

任何想法?提前致謝!

+0

的子視圖中創建一個LinearLayout中,把你的'txtAdd'和' txtRemove'放在這個線性佈局中,保持Linearlayout爲'visiblity = gone'。在列表項上,單擊將該線性佈局的可見性設置爲「可見」。然後觸發'txtAdd'和'txtRemove'的點擊事件。 – Vikrant

+0

這與我所做的相同,是不是@Vikrant?無論如何感謝 – Hugo

+0

必須添加'android:descendantFocusability =「blocksDescendants」'到你的列表視圖xml? – Vikrant

回答

0

此行添加到您的ListView XML android:descendantFocusability="blocksDescendants"

的事情是我們的孩子視圖可能成爲焦點,因此第一次點擊將成爲焦點,而且itemClick在將工作之後。到avoide可聚焦補充該行的XML

不過,如果它不工作,然後嘗試添加

android:focusable="false" 
android:focusableInTouchMode="false" 

到ListView

+0

公平的答案,但在這種情況下,它不適用,看起來問題在於,問題海報嵌套onClickListeners。 – Wilhelm

相關問題