アラーム時刻とそのアラームをオフ/オンにするトグルボタンを含むリストビューがあります。特定のリストビューのトグルボタンをクリックすると、その特定のアラームを設定/キャンセルしたいと思います。しかし、ビューに基づいてクリックしたリストビューの位置を取得するにはどうすればよいですか?
トグルボタンのオン/オフをクリックすると、次のコードが表示されます。
public void enableAlarm(View view) {
// set/cancel alarm manager pending intent
}
データベース内の特定のリストビューアイテムごとにいくつかの情報が保存されていますが、リストビューの位置が必要です。ビューから位置を取得するにはどうすればよいですか?
カスタムArrayAdapter
クラスを作成し、getView()
メソッドをオーバーライドすることをお勧めします。その方法から、トグルが設定されたリストアイテムの位置にアクセスでき、OnCheckedChangeListener
トグルボタンごとに一意のボタンを作成して、リストの位置を渡すことができます。
アラームとトグルボタンについて言及しているので、各ListViewアイテムに保持されることになっているものすべてのXMLレイアウトファイルがすでにあると想定しています。
更新:アラーム時刻を取得してenableAlarm()
メソッドに送信するには、final
内の変数として保存して、内でgetView()
アクセスできるようにする必要があります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;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加