2016-07-05 55 views
0

我試圖與CustomAdapter複選框列表,和我下面的教程here,我的代碼如下所示:ListView控件與按鈕的onclick方法

dataAdapter = new CustomAdapter(getContext(), R.layout.customrow, CheckboxArrayList); 
    ListView listView = (ListView) FragmentView.findViewById(R.id.list); 
    listView.setAdapter(dataAdapter); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      //..... 
      Toast.makeText(getContext(), "Clicked on Row: " + Checkbox.getName(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

當我此方法僅稱爲按下複選框外的邊緣區域。 如何使這個onClick方法發生在複選框本身而不是列表條目上?由於

+0

因此,你應該去打電話回去。定義一個接口並嘗試進行回調,這將調用父類(Activity/Fragment或其他)中定義的方法。 –

回答

0

你想設置一個監聽器CheckBox控件本身,而不是ListView控件。

// in your ListView adapter 
public View getView(int positon, View convertView, ViewGroup parent) 
{ 
    // inflate your cell 
    View cell = ... 

    // find your checkbox 
    CheckBox checkBox = (CheckBox)cell.findViewById(R.id.checkbox); 

    // set an OnCheckedChangeListener on the checkbox 
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton button, Boolean isChecked) 
    { 
    } 
    }); 

. 
. 
. 

如果您還沒有這樣做,請使用ViewHolder模式更有效地執行此操作。 ViewHolder將允許您保持對行/位置#的引用,以及共享CheckedChange事件的偵聽器。

+0

嗨,謝謝你的回覆。你能告訴我如何使用ViewHolder訪問複選框的位置號碼嗎? – Deidara

+0

https://developer.android.com/training/improving-layouts/smooth-scrolling.html – CSmith

0

使用setOnCheckedChangeListener()來獲取複選框事件