RecyclerView를 GridView처럼 사용하는 방법
조회수 469회
어댑터가 참조하는 뷰는 nameText와 dataText 뿐입니다.
DB는 이런식입니다.
SearchView로 이름을 검색했을 때 GridView처럼 이런식으로 나왔으면 좋겠습니다.
JOHN1 JOHN1 JOHN1 JOHN1
10 20 30 40
그런데 Adapter에 데이터를 어떻게 가져오는지 모르겠습니다.
public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {
List<Data> dataList;
Context context;
public Adapter(List<Data> dataList, Context context) {
this.dataList = dataList;
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
// holder.nameText.setText(dataList.get(position).getName());
// holder.dataText.setText(dataList.get(position).getData1());
// holder.dataText.setText(dataList.get(position).getData2());
// holder.dataText.setText(dataList.get(position).getData3());
// holder.dataText.setText(dataList.get(position).getData4());
}
@Override
public int getItemCount() {
return dataList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView nameText, dataText;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
nameText = itemView.findViewById(R.id.nameText);
dataText = itemView.findViewById(R.id.dataText);
}
}
}
onBindViewHolder에 주석처럼 하면 하나의 데이터만 들어가지는데 어떻게 해야하나요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
어댑터가 참조하는 View 가 TextView 2개 밖에 없기 때문에 한 줄에 이름, 데이터를 한 세트로 4개씩 출력하고 싶으시다면, holder item 의 xml 에 미리 TextView 를 4 세트로 만들어 두시면 될 것 같습니다.
그렇지 않다면 그리드 뷰를 사용하시거나, 수평 리스트뷰를 세로 리스트뷰에 담아 사용하시거나 하는 방법을 사용하셔야할것같습니다. 현 상태로 뭔가 마법을 부려 원하는 결과물을 뽑기는 힘들것으로 보입니다.
@Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { holder.bindView(dataList.get(position).getName(), dataList.get(position).getData1(), dataList.get(position).getData2(), dataList.get(position).getData3(), dataList.get(position).getData4()); } @Override public int getItemCount() { return dataList.size(); } public static class MyViewHolder extends RecyclerView.ViewHolder { TextView nameText, data1Text, data2Text, data3Text, data4Text; public MyViewHolder(@NonNull View itemView) { super(itemView); nameText = itemView.findViewById(R.id.nameText); data1Text = itemView.findViewById(R.id.data1Text); data2Text = itemView.findViewById(R.id.data2Text); data3Text = itemView.findViewById(R.id.data3Text); data4Text = itemView.findViewById(R.id.data4Text); } public view bindView(String name, String data1, String data2, String data3, String data4) { nameText.setText(name); data1Text.setText(data1); data2Text.setText(data2); data3Text.setText(data3); data4Text.setText(data4); } }
댓글 입력