> 코드에 대한 상세 설명은 아래 글 참고
2022.11.16 - [개발 언어/Java] - 안드로이드 RecyclerView(Adapter) 예제 코드 설명
Mainactivity.java
package com.example.listview;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView view; //변수명은 주로 소문자 사용
private ItemAdapter itemAdapter;
private List<Item> datalist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datalist = new ArrayList<>();
datalist.add(new Item("Frozen","겨울","2:30","12"));
datalist.add(new Item("The witcher","coming soon","2:32","15"));
datalist.add(new Item("Game of Thrones","winter is coming","2:32","19"));
itemAdapter = new ItemAdapter(datalist);
view = findViewById(R.id.recyclerview);
view.setAdapter(itemAdapter);
view.setLayoutManager(new LinearLayoutManager(this));
}
}
itemAdapter.java
package com.example.listview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
private List<Item> datalist;
public ItemAdapter(List<Item> datalist){
this.datalist = datalist;
}
@NonNull
@Override
public ItemAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.layout, parent, false));
// Context context = parent.getContext();
// LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// View view = inflater.inflate(R.layout.layout, parent, false);
// ItemAdapter.ItemViewHolder vh = new ItemAdapter.ItemViewHolder(view);
// return vh;
// View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout, parent, false);
// return new ItemAdapter.ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ItemAdapter.ItemViewHolder holder, int position) {
Item item = datalist.get(position);
holder.title.setText(item.getTitle());
holder.content.setText(item.getContent());
holder.time.setText(item.getTime());
holder.age.setText(item.getAge());
}
@Override
public int getItemCount() {
return datalist.size();
}
public class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView title;
private TextView content;
private TextView time;
private TextView age;
private ImageView imageView;
public ItemViewHolder(@NonNull View itemView) { //inflater한 아이템을 가져오기 위해 만든 파라미터.
super(itemView);
title = itemView.findViewById(R.id.title);
content = itemView.findViewById(R.id.content);
time = itemView.findViewById(R.id.time);
age = itemView.findViewById(R.id.age);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
item.java
package com.example.listview;
public class Item {
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Item(String title, String content, String time, String age) {
this.title = title;
this.content = content;
this.time = time;
this.age = age;
}
private String title;
private String content;
private String time;
private String age;
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
=> Component Tree
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="32dp"
android:text="title"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="content"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<View
android:id="@+id/view"
android:layout_width="120dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_weight="1"
app:srcCompat="@drawable/heart" />
</LinearLayout>
</LinearLayout>
=> Component Tree
'개발 > Java' 카테고리의 다른 글
[Android 개발] 안드로이드 RecyclerView(Adapter) 예제 코드 - Todo List 기본 틀 (0) | 2022.11.24 |
---|---|
[Android 개발] 안드로이드 RecyclerView(Adapter) 예제 코드 설명 (0) | 2022.11.16 |
[Android 개발] 간단한 계산 기능 구현 (0) | 2022.11.13 |
[Java] Integer.paselnt()와 안드로이드 스튜디오 EditText 사용하기 (0) | 2022.11.12 |
[Android 개발]Unable to load class 'com.google.common.util.concurrent.internal.InternalFutureFailureAccess'. 에러 (0) | 2022.11.11 |