android studio Recycle View 적용하기 -2
이전 글 : android studio Recycle View 생성하기 -1
1. MainActivity.java 코딩하기
package com.example.recycleview_excercise;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
// recyclerView를 제어할 변후
RecyclerView recyclerView;
// gameTitle을 저장할 변수 배열
private ArrayList<String> gameTitle = new ArrayList<>();
// gameDetails를 저장할 변수 배열
private ArrayList<String> gameDetails = new ArrayList<>();
// gameImages 저장할 변수 배열
private ArrayList<Integer> gameImages = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// recyclerView를 찾아서 지정한다.
recyclerView = findViewById(R.id.recycleView);
// recyclerView에 Linear메니저를 설정한다. 해당 context는 MainActivity에서 관리하는 코드이다.
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
// 이미지 및 string-array에 데이터를 저장한다.
saveArray();
}
// strings.xml에 있는 string-array와 이미지를 gameTitle, gameDetails 그리고 gameImages에 저장한다.
private void saveArray(){
String[] gameTitleArray = getResources().getStringArray(R.array.gameTitle);
String[] gameDetailsArray = getResources().getStringArray(R.array.gameDetails);
Integer[] gameImageArray = {R.drawable.portal2_logo2, R.drawable.barotrauma_logo, R.drawable.titanfall_2_logo, R.drawable.homeworld3};
// for loop를 이용하여 타이틀, 디테일 그리고 이미지를 각각 저장합니다.
for(int i = 0; i < gameTitleArray.length; i++){
gameTitle.add(gameTitleArray[i]);
gameDetails.add(gameDetailsArray[i]);
gameImages.add(gameImageArray[i]);
}
}
}
2. Adapter.java 코드 작성하기
package com.example.recycleview_excercise;
import android.content.Context;
import java.util.ArrayList;
public class GameAdapter {
private ArrayList<String> gameTitle;
private ArrayList<String> gameDetails;
private ArrayList<Integer> gameImages;
private Context context;
public GameAdapter(ArrayList<String> gameTitle, ArrayList<String> gameDetails, ArrayList<Integer> gameImages, Context context) {
this.gameTitle = gameTitle;
this.gameDetails = gameDetails;
this.gameImages = gameImages;
this.context = context;
}
}
package com.example.recycleview_excercise;
import android.content.Context;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class GameAdapter extends RecyclerView.Adapter<GameAdapter.GameViewHolder> {
private ArrayList<String> gameTitle;
private ArrayList<String> gameDetails;
private ArrayList<Integer> gameImages;
private Context context;
public GameAdapter(ArrayList<String> gameTitle, ArrayList<String> gameDetails, ArrayList<Integer> gameImages, Context context) {
this.gameTitle = gameTitle;
this.gameDetails = gameDetails;
this.gameImages = gameImages;
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
}
package com.example.recycleview_excercise;
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.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class GameAdapter extends RecyclerView.Adapter<GameAdapter.GameViewHolder> {
private ArrayList<String> gameTitle;
private ArrayList<String> gameDetails;
private ArrayList<Integer> gameImages;
private Context context;
public GameAdapter(ArrayList<String> gameTitle, ArrayList<String> gameDetails, ArrayList<Integer> gameImages, Context context) {
this.gameTitle = gameTitle;
this.gameDetails = gameDetails;
this.gameImages = gameImages;
this.context = context;
}
@NonNull
@Override
public GameViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycleview_ele, parent, false);
return new GameViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull GameViewHolder holder, int position) {
holder.gameTitleView.setText(gameTitle.get(position));
holder.gameDetailsView.setText(gameDetails.get(position));
holder.imageViews.setImageResource(gameImages.get(position));
}
@Override
public int getItemCount() {
return this.gameTitle.size();
}
public class GameViewHolder extends RecyclerView.ViewHolder{
private TextView gameTitleView, gameDetailsView;
private ImageView imageViews;
private CardView cardView;
public GameViewHolder(@NonNull View itemView) {
super(itemView);
gameTitleView = itemView.findViewById(R.id.gameTitleView);
gameDetailsView = itemView.findViewById(R.id.gemeDetailsView);
imageViews = itemView.findViewById(R.id.gameImageView);
gameTitleView = itemView.findViewById(R.id.cardView);
}
}
}
3. MainActivity.java에 Adapter추가하기
package com.example.recycleview_excercise;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
// recyclerView를 위한 adapter를 추가한다.
GameAdapter gameAdapter;
// recyclerView를 제어할 변후
RecyclerView recyclerView;
// gameTitle을 저장할 변수 배열
private ArrayList<String> gameTitle = new ArrayList<>();
// gameDetails를 저장할 변수 배열
private ArrayList<String> gameDetails = new ArrayList<>();
// gameImages 저장할 변수 배열
private ArrayList<Integer> gameImages = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// recyclerView를 찾아서 지정한다.
recyclerView = findViewById(R.id.recycleView);
// recyclerView에 Linear메니저를 설정한다. 해당 context는 MainActivity에서 관리하는 코드이다.
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
// 이미지 및 string-array에 데이터를 저장한다.
saveArray();
gameAdapter = new GameAdapter(gameTitle, gameDetails, gameImages, MainActivity.this);
recyclerView.setAdapter(gameAdapter);
}
// strings.xml에 있는 string-array와 이미지를 gameTitle, gameDetails 그리고 gameImages에 저장한다.
private void saveArray(){
String[] gameTitleArray = getResources().getStringArray(R.array.gameTitle);
String[] gameDetailsArray = getResources().getStringArray(R.array.gameDetails);
Integer[] gameImageArray = {R.drawable.portal2_logo2, R.drawable.barotrauma_logo, R.drawable.titanfall_2_logo, R.drawable.homeworld3};
// for loop를 이용하여 타이틀, 디테일 그리고 이미지를 각각 저장합니다.
for(int i = 0; i < gameTitleArray.length; i++){
gameTitle.add(gameTitleArray[i]);
gameDetails.add(gameDetailsArray[i]);
gameImages.add(gameImageArray[i]);
}
}
}
gitHubLink : https://github.com/Alex-Choi0/android_recycleView_Excercise1.git
댓글
댓글 쓰기