我有一个列表,我想设置它的OnItemLongClickListener来显示TimePickerDialog。
问题是Picker无法从调用它的项目中获取任何值。
lst_meetings.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int pos, long l) {
TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
if (timePicker.isShown())finishMeeting(Integer.parseInt(((TextView) view.findViewById(R.id.txt_No)).getText().toString()),String.format("%02d", i) + ":" + String.format("%02d", i1) + ":00");
}
},0,0,false);
timePickerDialog.setTitle("Finish Time");
timePickerDialog.show();
return true;
}
});
Setting view
as final is not allowed.
如何将View
传递给匿名类。
答案 0 :(得分:0)
您可以使用final View
方法中可见的临时onTimeSet()
。
另外,请确保您拥有TimePickerDialog
的有效上下文,因此请使用MainActivity.this
代替this
(将MainActivity
替换为您的活动名称)。
试试这个:
lst_meetings.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int pos, long l) {
final View tempView = view; //added
TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
// use tempView here:
if (timePicker.isShown())finishMeeting(Integer.parseInt(((TextView) tempView.findViewById(R.id.txt_No)).getText().toString()),String.format("%02d", i) + ":" + String.format("%02d", i1) + ":00");
}
},0,0,false);
timePickerDialog.setTitle("Finish Time");
timePickerDialog.show();
return true;
}
});