Android RecyclerView 기본 사용 설명

7544 단어 AndroidRecyclerView
RecyclerView 가 뭐야?
RecyclerView 에 대해 서 는 View 를 전시 하고 회수 하 는 데 주로 사용 되 는 컨트롤 이 있 는데,관리 들 은 한 마디 로 요약 했다.
RecyclerView 는 제 한 된 데이터 항목 창 을 제공 하여 빅 데이터 세트 를 효과적으로 표시 하 는 보기 입 니 다.
기본 은 몇 가지 기본 적 인 기능 을 제공 합 니 다.
디 스 플레이 를 제어 하 는 방식->LayoutManager-(필수)
Item 간 의 간격 을 제어 하 다―>Item Decoration―-(필요 하지 않 음)
Item 첨삭 을 제어 하 는 애니메이션―->ItemAnimator―(필요 하지 않 음)
이상 은 ListView 의 대부분 기능 을 완성 할 수 있 지만 자주 사용 하 는 기능 이 하나 부족 합 니 다.바로 Item 의 포인트 이벤트 입 니 다.물론 이것 은 문제 가 되 지 않 습 니 다.앞에서 도 말 했 듯 이 RecyclerView 는 view 전시 회 수 를 제어 하 는 데 사용 되 고 다른 것 은 모두 사용자 가 맞 춤 형 으로 만 듭 니 다.사용자 에 게 자 유 를 주 었 다.다음은 기본 적 인 사용 방식 을 살 펴 보 겠 습 니 다.
기본 사용
RecyclerView 는 Android 의 기본 라 이브 러 리 가 아니 기 때문에 개발 자가 RecyclerView 를 사용 하려 면 gradle 에서 해당 하 는 확장 패 키 지 를 참조 해 야 합 니 다.
compile 'com.android.support:recyclerview-v7:25.0.1'
그 후에 여러분 이 해 야 할 일과 ListView 를 사용 하 는 것 도 차이 가 크 지 않 습 니 다.LayoutManager 와 Adapter 만 바 꾸 면 가장 기본 적 인 디 스 플레이 를 완성 할 수 있 습 니 다.Adapter 와 Adapter 에 필요 한 ViewHolder 는 모두 RecyvlerView 의 내부 클래스 를 계승 합 니 다.
RecyclerView 의 Adapter

public class DemoAdapter extends RecyclerView.Adapter<DemoViewHolder> {
 private List<String> data;

 public DemoAdapter(List<String> data) {
 this.data = data;
 }

 @Override
 public DemoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

 DemoViewHolder holder = new DemoViewHolder(LayoutInflater.from(
 parent.getContext()).inflate(R.layout.demo_recycler_view_item, parent,
 false));
 return holder;
 }

 @Override
 public void onBindViewHolder(DemoViewHolder holder, int position) {
 holder.getView().setText(data.get(position));
 }

 @Override
 public int getItemCount() {
 return data.size();
 }
}

RecyclerView 의 ViewHolder.

public class DemoViewHolder extends RecyclerView.ViewHolder {

 private TextView view;

 public DemoViewHolder(View itemView) {
 super(itemView);
 view = (TextView) itemView.findViewById(R.id.item_view);
 }

 public TextView getView() {
 return view;
 }
}

프로젝트 주 활동

public class RecyclerViewDemoActivity extends AppCompatActivity {

 private RecyclerView recyclerView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_recycler_view_demo);
 recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
 String[] datas = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
 List<String> strings = Arrays.asList(datas);
 DemoAdapter adapter = new DemoAdapter(strings);
 recyclerView.setLayoutManager(new LinearLayoutManager(this));
 recyclerView.setAdapter(adapter);

 }

}
activity 레이아웃 파일 레이아웃

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_recycler_view_demo"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.yjeeq.study.recyclerview.RecyclerViewDemoActivity">

 <android.support.v7.widget.RecyclerView
 android:id="@+id/recycler_view"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 </android.support.v7.widget.RecyclerView>
</RelativeLayout>

항목 레이아웃 파일 레이아웃

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="40dp"
 android:orientation="vertical">

 <TextView
 android:id="@+id/item_view"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@android:color/holo_blue_dark"
 android:gravity="center" />
</LinearLayout>
다음은 운행 효과.
클릭 이벤트 설정
기본 적 인 전 시 를 마 쳤 으 니 Recycler 에 클릭 이 벤트 를 추가 하 는 방법 을 소개 합 니 다.사실 사고방식 은 매우 간단 하 다.바로 RecyclerView 의 addOnItemTouchListener 에서 글 을 쓰 는 것 이다.여기 서 구체 적 인 실현 을 제시 하 다.여러분 이 보시 면 아 실 거 라 고 믿 습 니 다.
*OnitemTouchListener 의 실현*

public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
 private View childView;
 private RecyclerView touchView;

 public RecyclerItemClickListener(Context context, final OnItemClickListener mListener) {
 mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
 @Override
 public boolean onSingleTapUp(MotionEvent ev) {
 if (childView != null && mListener != null) {
 mListener.onItemClick(childView, touchView.getChildPosition(childView));
 }
 return true;
 }

 @Override
 public void onLongPress(MotionEvent ev) {
 if (childView != null && mListener != null) {
 mListener.onLongClick(childView, touchView.getChildAdapterPosition(childView));
 }
 }
 });
 }

 GestureDetector mGestureDetector;

 public interface OnItemClickListener {
 public void onItemClick(View view, int position);

 public void onLongClick(View view, int posotion);
 }

 @Override
 public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
 mGestureDetector.onTouchEvent(motionEvent);
 childView = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
 touchView = recyclerView;
 return false;
 }

 @Override
 public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {

 }

 @Override
 public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

 }
} 
사용 방식
우선 주 클래스 에 RecyclerItemClickListener.OnItemClickListener 를 계승 한 후 주 클래스 에 다음 과 같은 방법 을 추가 합 니 다.

 private void setOnItemClick() {
 recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, this));

 }

 public void onItemClick(View view, int position) {
 Log.d("XXXXXX", "onItemClick : postion " + position);
 }

 @Override
 public void onLongClick(View view, int posotion) {
 Log.d("XXXXXX", "onLongClick position : " + posotion);
 }

기본 사용 참고:https://www.jb51.net/article/88924.htm
클릭 은 참조:https://www.jb51.net/article/104510.htm
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기