setOnClickListener在Android为两个textview



我有一个简单的日期选择应用程序在Android和它的工作很好,当我点击第一个TextView。我如何激活相同的日历与第二个TextView。一个TextView显示长日期,另一个显示短日期

public class MainActivity extends AppCompatActivity {
private TextView mDisplayLongDate;
TextView mDisplayShortDate;
CheckBox checkBoxVisibility;
private DatePickerDialog.OnDateSetListener mDateSetListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDisplayLongDate = findViewById(R.id.tvLDate);
mDisplayShortDate = findViewById(R.id.tvSDate);
//View checkBox = findViewById(R.id.checkBox);
checkBoxVisibility = findViewById(R.id.checkBox_visibility);
//boolean isChecked = checkBoxVisibility.isClickable();
boolean isChecked = checkBoxVisibility.isChecked();
updateTextVisibility(isChecked);
checkBoxVisibility.setOnCheckedChangeListener((buttonView, isChecked1) -> {
//Step 05 - Updating UI according to the currently changed state
updateTextVisibility(isChecked1);
});
mDisplayLongDate.setOnClickListener(view -> {
Calendar cal = Calendar.getInstance();
使用CheckBox, TextView显示长日期和短日期。我无法单击短日期来编辑日历。如何在两种情况下激活日历。
String dateLong = monthStr + "/" + day + "/" + year;
String dateShort = monthStr + "/" + day;
mDisplayLongDate.setText(dateLong);
mDisplayShortDate.setText(dateShort);
};
}
private void updateTextVisibility(boolean isChecked) // When checking the trigger (checkbox)
{
if (isChecked)
{
mDisplayShortDate.setVisibility(View.VISIBLE);
mDisplayLongDate.setVisibility(View.GONE);
}
else
{
mDisplayShortDate.setVisibility(View.GONE);
mDisplayLongDate.setVisibility(View.VISIBLE);
}

您可以使用这种类型的方法,并在需要的地方调用它。

private void getCal() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int monthStr = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dPDialog = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog,
new DatePickerDialog.OnDateSetListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
public void onDateSet(DatePicker datepicker, int selectedY, int selectedM, int selectedD) {
String[] months = new DateFormatSymbols(Locale.ENGLISH).getMonths();
String dateLong = months[selectedM] + "/" + selectedD + "/" + selectedY;
String dateShort = months[selectedM] + "/" + selectedD;
// String dateLong = (selectedM + 1) + "/" + selectedD + "/" + selectedY;
//String dateShort = (selectedM + 1) + "/" + selectedD;
mDisplayLongDate.setText(dateLong);
mDisplayShortDate.setText(dateShort);
}
}, year, monthStr, day);
dPDialog.show();

}

示例类,

public class MainActivity extends AppCompatActivity {
private TextView mDisplayLongDate;
TextView mDisplayShortDate;
CheckBox checkBoxVisibility;
private DatePickerDialog.OnDateSetListener mDateSetListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDisplayLongDate = findViewById(R.id.tvLDate);
mDisplayShortDate = findViewById(R.id.tvSDate);
mDisplayLongDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getCal();
}
});

mDisplayShortDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getCal();
}
});

}
private void getCal() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int monthStr = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dPDialog = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog,
new DatePickerDialog.OnDateSetListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
public void onDateSet(DatePicker datepicker, int selectedY, int selectedM, int selectedD) {
String[] months = new DateFormatSymbols(Locale.ENGLISH).getMonths();
String dateLong = months[selectedM] + "/" + selectedD + "/" + selectedY;
String dateShort = months[selectedM] + "/" + selectedD;
// String dateLong = (selectedM + 1) + "/" + selectedD + "/" + selectedY;
//String dateShort = (selectedM + 1) + "/" + selectedD;
mDisplayLongDate.setText(dateLong);
mDisplayShortDate.setText(dateShort);
}
}, year, monthStr, day);
dPDialog.show();

}
}

最新更新