Android RecyclerView 기본 사용 설명
7544 단어 AndroidRecyclerView
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
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.