blob: ceda16d95d9ac2d39fb1cb2ca6f09b7ac797940a [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package androidx.leanback.widget;
/**
* A {@link Row} composed of a optional {@link HeaderItem}, and an {@link ObjectAdapter}
* describing the items in the list.
*/
public class ListRow extends Row {
private final ObjectAdapter mAdapter;
private CharSequence mContentDescription;
/**
* Returns the {@link ObjectAdapter} that represents a list of objects.
*/
public final ObjectAdapter getAdapter() {
return mAdapter;
}
public ListRow(HeaderItem header, ObjectAdapter adapter) {
super(header);
mAdapter = adapter;
verify();
}
public ListRow(long id, HeaderItem header, ObjectAdapter adapter) {
super(id, header);
mAdapter = adapter;
verify();
}
public ListRow(ObjectAdapter adapter) {
super();
mAdapter = adapter;
verify();
}
private void verify() {
if (mAdapter == null) {
throw new IllegalArgumentException("ObjectAdapter cannot be null");
}
}
/**
* Returns content description for the ListRow. By default it returns
* {@link HeaderItem#getContentDescription()} or {@link HeaderItem#getName()},
* unless {@link #setContentDescription(CharSequence)} was explicitly called.
*
* @return Content description for the ListRow.
*/
public CharSequence getContentDescription() {
if (mContentDescription != null) {
return mContentDescription;
}
final HeaderItem headerItem = getHeaderItem();
if (headerItem != null) {
CharSequence contentDescription = headerItem.getContentDescription();
if (contentDescription != null) {
return contentDescription;
}
return headerItem.getName();
}
return null;
}
/**
* Explicitly set content description for the ListRow, {@link #getContentDescription()} will
* ignore values from HeaderItem.
*
* @param contentDescription Content description sets on the ListRow.
*/
public void setContentDescription(CharSequence contentDescription) {
mContentDescription = contentDescription;
}
}