带按钮Onclick方法的ListView

时间:2016-07-05 20:38:52

标签: android listview

我正在尝试使用CustomAdapter创建一个复选框列表,我正在关注教程here,我的代码如下所示:

    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方法在复选框本身上发生,而不是列表条目?感谢

2 个答案:

答案 0 :(得分:0)

使用setOnCheckedChangeListener()获取复选框事件

答案 1 :(得分: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事件的侦听器。