사용자 지정 ArrayAdapter
클래스를 만들고 getView()
메서드를 재정의하는 것이 좋습니다. 이 메서드에서 토글이 설정된 목록 항목의 위치에 액세스 할 수 있으며 각 토글 단추에 대해 고유 한 OnCheckedChangeListener
을 생성하여 목록의 위치에 전달할 수 있습니다.
알람 및 토글 버튼을 언급했기 때문에 이미 각 ListView 항목에 보관해야하는 항목에 대한 XML 레이아웃 파일이 있다고 가정합니다.
업데이트 : 알람 시간을 얻고 enableAlarm()
방법에 전송하기 위해 , 당신은 그래서 당신이 onCheckedChangeListener
내에서 액세스 할 수 getView()
내에서 final
변수로 저장해야합니다. 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;
}
사용자는 목록보기 용 어댑터를 사용하고 있습니까? –
배열 어댑터, 나는 목록보기 항목에 대한 setOnItemClick을 가지고 있지만 실제 토글 단추에는 해당되지 않습니다. – user10297
setOnItemClick 행의 하위 뷰가 아닌 전체 행입니다. 나는 사용자 정의 어댑터를 사용해야한다고 생각합니다. –