1.Model
public class TestItem {
private String name;
public TestItem(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
2. Adapter
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
List<TestItem> mItems;
public RecyclerAdapter(List<TestItem> mItems) {
this.mItems = mItems;
}
@NonNull
@Override
//새로운 뷰홀더 생성. 각 아이템의 디자인레이아웃을 불러온다.
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parents, int viewType) {
View view = LayoutInflater.from(parents.getContext()).inflate(R.layout.layout_item, parents, false);
return new CustomViewHolder(view);
}
class CustomViewHolder extends RecyclerView.ViewHolder {
private TextView nameTv;
public CustomViewHolder(View itemView){
super(itemView);
nameTv = (TextView) itemView.findViewById(R.id.profile_textview);
}
}
@Override
//각각의 아이템을 바인딩한다
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
CustomViewHolder view = (CustomViewHolder) holder;
view.nameTv.setText( mItems.get(position).getName() );
}
@Override
//아이템의 개수를 반환한
public int getItemCount() {
return mItems.size();
}
}
3. MainActivity
package com.example.lipnus.recyclerview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private String[] names = {"Charlie","Andrew","Han","Liz","Thomas","Sky","Andy","Lee","Park"};
private ArrayList<TestItem> mItems = new ArrayList<>();
private RecyclerView.Adapter adapter;
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRecyclerView();
}
private void setRecyclerView() {
recyclerView = findViewById(R.id.recyclerview);
// 각 Item 들이 RecyclerView 의 전체 크기를 변경하지 않는 다면
// setHasFixedSize() 함수를 사용해서 성능을 개선
// 변경될 가능성이 있다면 false, 없다면 true
recyclerView.setHasFixedSize(true);
// RecyclerView에 Adapter를 설정해줍니다.
adapter = new RecyclerAdapter(mItems);
recyclerView.setAdapter(adapter);
// 지그재그형의 그리드 형식
//mainBinding.recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
// 그리드 형식
//mainBinding.recyclerView.setLayoutManager(new GridLayoutManager(this,4));
// 가로 또는 세로 스크롤 목록 형식
recyclerView.setLayoutManager(new LinearLayoutManager(this));
setData();
}
private void setData(){
mItems.clear();
for(String name : names){
mItems.add(new TestItem(name));
}
// 데이터 추가가 완료되었으면 notifyDataSetChanged() 메서드를 호출해 데이터 변경 체크실행.
adapter.notifyDataSetChanged();
}
}
kotlin이랑 비교하면서 작성.
'Android > Android 일반' 카테고리의 다른 글
http 접근 허용 (0) | 2018.11.30 |
---|---|
에뮬레이터에서 localhost로 접속 (0) | 2018.11.24 |
추천 라이브러리 (0) | 2018.11.24 |
RecyclerView - onClick구현 (0) | 2018.11.22 |
AndroidStudio Auto Import (0) | 2018.11.22 |