반응형
예전에 listview 을 이용해서 화면에 정보를 표시하는 기능을 구현했다. 단순 목록 형태의 리스트 뷰이기 때문에 데이터를 여러개 보여줄 때 쉽게 사용할 수 있었기 때문이기도 하고... 뭐 아무튼지...
그러다가 recycleview 을 알게 되어 사용하면서 부터 여러가지 시도를 해 볼 수 있게 되었다. recycleview 의 경우 listview 처럼 쉽게 목록을 보여주기도 하지만, gridview 와 같이 바둑판 모양의 화면을 그려줄 수도 있다. 그래서 쉽게 화면의 모양을 구현할 수 있다는 것을 알게 되었다.
실행되는 모습을 보면 마치 gridview 을 구현해 놓은 것 같지만, 실상은 recycleview 을 구현하고 모양만 변화를 주었을 뿐이다.
binding.listData.setAdapter(recyclerAdMobAdapter);
// binding.listData.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
binding.listData.setLayoutManager(new GridLayoutManager(getApplicationContext(), 3));
binding.listData.addItemDecoration(new GridSpacing(20, 20));
layoutmanager 을 LinearLayout 에서 GridLayoutManager 로 변경했을 뿐인데... 모양이 저렇게 변한 것이다. decoration 은 grid 모양일 때 간격을 두기 위해서 사용한 것이고, 딱히 다른 것을 한 것은 없는 것이라, 다양한 모양 변화를 줄 수 있어서 좋은 것 같다.
끝.
참고로 decoration 은 위한 소스는 아래와 같다.
import android.graphics.Rect;
import android.view.View;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class GridSpacing extends RecyclerView.ItemDecoration {
private int mSpacing;
private int mTopSpacing;
public GridSpacing(int spacing, int topSpacing) {
this.mSpacing = spacing;
this.mTopSpacing = topSpacing;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)
{
super.getItemOffsets(outRect, view, parent, state);
// Column Index
int index = ((GridLayoutManager.LayoutParams) view.getLayoutParams()).getSpanIndex();
// Item 포지션
int position = parent.getChildLayoutPosition(view);
if (index == 0) {
//좌측 Spacing 절반
outRect.right = mSpacing/ 2;
} else {
//우측 Spacing 절반
outRect.left = mSpacing/ 2;
} // 상단 탑 Spacing 맨 위에 포지션 0, 1은 Spacing을 안 줍니다.
if (position < 2) {
outRect.top = 0;
} else {
outRect.top = mTopSpacing;
}
}
}
반응형
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : 구글맵 최종 위치 표시 하기. (2) | 2022.01.11 |
---|---|
안드로이드 앱 만들기 : qrscan , barcode 스캐너 (2) | 2022.01.10 |
안드로이드 앱 만들기. 범블비가 업데이트 되었습니다. (0) | 2022.01.06 |
안드로이드 앱 만들기 : 음력을 양력으로 변환 하기 (3) | 2021.12.27 |
안드로이드 앱 만들기 : 옵디강 (제주맛집) 기능 추가 버스 정류소 위치 (3) | 2021.12.26 |