Create an interface to set details text

For some cases, we still need a way to set text directly.

Test: robotest
Bug: 123538183
Change-Id: I5926730fcc2ba6382ee42c36ce398d6c930650f3
This commit is contained in:
tmfang
2019-01-30 16:52:29 +08:00
parent 55168269d7
commit b719a7d7e3
2 changed files with 33 additions and 5 deletions

View File

@@ -90,6 +90,7 @@ public class AppEntitiesHeaderController {
private int mHeaderTitleRes;
private int mHeaderDetailsRes;
private int mHeaderEmptyRes;
private CharSequence mHeaderDetails;
private View.OnClickListener mDetailsOnClickListener;
/**
@@ -147,6 +148,14 @@ public class AppEntitiesHeaderController {
return this;
}
/**
* Set the text for app entities header details.
*/
public AppEntitiesHeaderController setHeaderDetails(CharSequence detailsText) {
mHeaderDetails = detailsText;
return this;
}
/**
* Register a callback to be invoked when header details view is clicked.
*/
@@ -232,11 +241,13 @@ public class AppEntitiesHeaderController {
}
private void bindHeaderDetailsView() {
CharSequence detailsText = "";
try {
detailsText = mContext.getText(mHeaderDetailsRes);
} catch (Resources.NotFoundException e) {
Log.e(TAG, "Resource of header details can't not be found!", e);
CharSequence detailsText = mHeaderDetails;
if (TextUtils.isEmpty(detailsText)) {
try {
detailsText = mContext.getText(mHeaderDetailsRes);
} catch (Resources.NotFoundException e) {
Log.e(TAG, "Resource of header details can't not be found!", e);
}
}
mHeaderDetailsView.setText(detailsText);
mHeaderDetailsView.setVisibility(

View File

@@ -84,6 +84,23 @@ public class AppEntitiesHeaderControllerTest {
assertThat(view.getText()).isEqualTo(mContext.getText(R.string.expand_button_title));
}
@Test
public void setHeaderDetails_onlyDetailsTextSet_shouldSetToDetailsView() {
mController.setHeaderDetails(TITLE).apply();
final TextView view = mAppEntitiesHeaderView.findViewById(R.id.header_details);
assertThat(view.getText()).isEqualTo(TITLE);
}
@Test
public void setHeaderDetails_detailsTextAndResBothSet_shouldSetTextToDetailsView() {
mController.setHeaderDetailsRes(R.string.expand_button_title);
mController.setHeaderDetails(TITLE).apply();
final TextView view = mAppEntitiesHeaderView.findViewById(R.id.header_details);
assertThat(view.getText()).isEqualTo(TITLE);
}
@Test
public void setHeaderDetailsClickListener_setClickListener_detailsViewAttachClickListener() {
mController.setHeaderDetailsClickListener(v -> {