我建议你创建一个自定义的ArrayAdapter
类并覆盖getView()
方法。通过该方法,您可以访问设置切换的列表项的位置,并可以为每个切换按钮创建一个唯一的OnCheckedChangeListener
,并将其传递给列表的位置。
我假设你已经有了一个XML布局文件,因为你提到了一个报警和切换按钮,所有应该在每个ListView项目中都有。
更新: 为了得到报警时间,并将其发送到enableAlarm()
方法,你需要将其保存为内getView()
一个final
变量,因此您可以在onCheckedChangeListener
内访问它。看看我得到ToggleButton后添加的代码。
@override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = getContext().getLayoutInflater();
v = inflater.inflate(R.layout.alarm_item, parent, false);
}
ToggleButton toggle = (ToggleButton) v.findViewById(R.id.alarmToggle);
//get the alarm time
TextView timeView = (TextView) v.findViewById(R.id.theAlarmTextView);
final String alarmTime = timeView.getText();
toggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
//modify your enableAlarm method to take in the time as a String
enableAlarm(buttonView, alarmTime);
}
}
});
return v;
}
您是否使用自定义适配器进行listview。? –
阵列适配器,我有一个setOnItemClick为列表视图项目,但没有击中实际的切换按钮。 – user10297
setOnItemClick为完整行而不是行的子视图。我认为你应该使用自定义适配器。 –