티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to show an empty view with a RecyclerView?
RecyclerView에서 빈 뷰를 표시하는 방법은 무엇인가요?
문제 내용
I am used to put an special view inside the layout file as described in the ListActivity
documentation to be displayed when there is no data. This view has the id "android:id/empty"
.
이전에는 ListActivity 문서에서 설명하는 것처럼 "android:id/empty"라는 ID를 가진 특별한 뷰를 레이아웃 파일 안에 넣어서 데이터가 없을 때 보여주곤 했습니다.
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_data" />
I wonder how this can be done with the new RecyclerView
?
그러나 새로운 RecyclerView에서는 이를 어떻게 해야 할지 궁금합니다.
높은 점수를 받은 Solution
On the same layout where is defined the RecyclerView
, add the TextView
:
RecyclerView가 정의된 레이아웃과 동일한 레이아웃에 TextView를 추가하세요.
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
<TextView
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:visibility="gone"
android:text="@string/no_data_available" />
At the onCreate
or the appropriate callback you check if the dataset that feeds your RecyclerView
is empty. If the dataset is empty, the RecyclerView
is empty too. In that case, the message appears on the screen. If not, change its visibility:
onCreate나 적절한 콜백에서 RecyclerView를 채우는 데이터셋이 비어 있는지 확인하세요. 데이터셋이 비어 있다면, RecyclerView도 비어 있습니다. 그런 경우, 메시지가 화면에 나타납니다. 비어 있지 않다면, TextView의 가시성을 변경하세요:
private RecyclerView recyclerView;
private TextView emptyView;
// ...
recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
emptyView = (TextView) rootView.findViewById(R.id.empty_view);
// ...
if (dataset.isEmpty()) {
recyclerView.setVisibility(View.GONE);
emptyView.setVisibility(View.VISIBLE);
}
else {
recyclerView.setVisibility(View.VISIBLE);
emptyView.setVisibility(View.GONE);
}
가장 최근 달린 Solution
One more way is to use addOnChildAttachStateChangeListener
which handles appearing/disappearing child views in RecyclerView
.
addOnChildAttachStateChangeListener를 사용하는 또 다른 방법이 있습니다. 이 방법은 RecyclerView에서 나타나고 사라지는 자식 뷰를 처리합니다.
recyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
@Override
public void onChildViewAttachedToWindow(@NonNull View view) {
forEmptyTextView.setVisibility(View.INVISIBLE);
}
@Override
public void onChildViewDetachedFromWindow(@NonNull View view) {
forEmptyTextView.setVisibility(View.VISIBLE);
}
});
출처 : https://stackoverflow.com/questions/28217436/how-to-show-an-empty-view-with-a-recyclerview
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드에서 SMS 작성 화면을 보여주는 방법 (0) | 2023.02.25 |
---|---|
안드로이드 RecyclerView에서 아이템 추가 및 삭제 (0) | 2023.02.24 |
java.lang.NullPointerException: 'android.view.View.getImportantForAccessibility()' 메소드를 null 객체 참조에서 호출하려고 시도했습니다. (0) | 2023.02.23 |
안드로이드에서 이전 화면으로 돌아가고 액티비티를 종료하는 방법 (0) | 2023.02.23 |
안드로이드에서 서비스에서 액티비티를 시작하는 방법 (0) | 2023.02.23 |