2011-03-23 104 views
0

我正在嘗試設置一個孩子點擊收聽我的ExpandedListView,我得到一些奇怪的結果:的Android onClickListener奇怪的行爲

theList.setOnChildClickListener(new OnChildClickListener() { 
    @Override 
    public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { 
     Log.i(LOG_TAG, "clicked"); 

     ExpandableListAdapter adapter = parent.getExpandableListAdapter(); 
     View v = (View)adapter.getChild(groupPosition, childPosition); 

     Toast toast = Toast.makeText(getApplicationContext(), 
       "item: " + new Integer(groupPosition).toString() + ":" + new Integer(childPosition).toString(), 
       Toast.LENGTH_SHORT); 
     toast.show(); 

     if (!((CheckedTextView)view.findViewById(R.id.check)).isChecked()){ 
      ((CheckedTextView)view.findViewById(R.id.check)).setChecked(true); 
     } else { 
      ((CheckedTextView)view.findViewById(R.id.check)).setChecked(false); 
     } 

     return true; 
    } 
}); 

它那種工作。當我檢查其中一件物品時,另一件物品也將被選中,看似隨機。我不正確嗎?

+0

還在摸索着這個。已經有好幾天了。我知道其他人也有這個問題,但還沒有找到解決方案。 – moonlightcheese 2011-03-25 18:37:02

+0

被檢查的項目實際上正在變成隨機的,不同的地方,因爲我在列表中上下滾動。例如,當我放下組0並且點擊項目0時,該項目被選中,但是當我拉下組2時,它的項目5被點擊,但是,在上面,組0項目0現在未被選中,並且項目3在那個小組現在被選中。把我的頭髮拉出來。這沒有意義。這個確切的代碼使用ExpandableListActivity的另一個例子。 – moonlightcheese 2011-03-25 18:46:12

回答

0

自己解決了這個問題。我最終擴展了適配器類並覆蓋了getChildView和getGroupView,並向適配器添加了一個布爾值列表以跟上檢查標記。可能不是最複雜的解決方案,但完美的作品。