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







댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)