--> 현재 1. '투표 종료' 눌렀을 때 두 번째 Acitivity로 넘어가게 하기까지 완료한 상태
package com.cookandroid.w11_gallery;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt = (Button) findViewById(R.id.btnResult);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
startActivity(intent);
}
//정수를 저장할 수 있는 박스 9개를 만들어놓고 0으로 초기화
int rating[] = new int[9];
//원래 하던 것 : ImageView iv; --> iv = (ImageView) findViewById (R.id.iv)
ImageView image[] = new ImageView[9];
Integer image_id[] = {R.id.iv1, R.id.iv2, R.id.iv3,
R.id.iv4, R.id.iv5, R.id.iv6,
R.id.iv7, R.id.iv8, R.id.iv9};
for (int i=0; i<9; i++){
rating[i] = 0;
//캐스팅 하던 대로. ImageView img(변수) = (ImageView) findViewByID (R.id.--)
image[i] = (ImageView) findViewById(image_id[i]);
//final - 한 번 할당한 뒤 다시는 값을 바꾸지 않아야 할 경우에.(실수로라도 바꾸지 않게. 안전장치.)
final int j = i;
image[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rating[j]++;
}
});
}
});
}
}
package com.cookandroid.w11_gallery;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//정수를 저장할 수 있는 박스 9개를 만들어놓고 0으로 초기화
int rating[] = new int[9];
//원래 하던 것 : ImageView iv; --> iv = (ImageView) findViewById (R.id.iv)
ImageView image[] = new ImageView[9];
Integer image_id[] = {R.id.iv1, R.id.iv2, R.id.iv3,
R.id.iv4, R.id.iv5, R.id.iv6,
R.id.iv7, R.id.iv8, R.id.iv9};
for (int i = 0; i < 9; i++) {
rating[i] = 0;
//캐스팅 하던 대로. ImageView img(변수) = (ImageView) findViewByID (R.id.--)
image[i] = (ImageView) findViewById(image_id[i]);
//final - 한 번 할당한 뒤 다시는 값을 바꾸지 않아야 할 경우에.(실수로라도 바꾸지 않게. 안전장치.)
final int j = i;
image[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rating[j]++;
}
});
}
Intent intent = getIntent();
int r[] = intent.getIntArrayExtra("rating");
Button bt = (Button) findViewById(R.id.btnResult);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
//intent 내용 전달할 때 putExtra 사용.(내용 꺼낼 때 - getExtra)
intent.putExtra("rating", rating);
startActivity(intent);
}
});
}
}
package com.cookandroid.w11_gallery;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ResultActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
//인텐트 가져와서 사용
Intent intent = getIntent();
int r[] = intent.getIntArrayExtra("rating");
RatingBar br[] = new RatingBar[9];
Integer br_id[] = {R.id.rbar1, R.id.rbar2, R.id.rbar3, R.id.rbar4,
R.id.rbar5, R.id.rbar6, R.id.rbar7, R.id.rbar8, R.id.rbar9};
for (int i=0; i<9; i++){
br[i] = (RatingBar) findViewById(br_id[i]);
br[i].setRating((float)r[i]);
}
Button bt = (Button) findViewById(R.id.btnReturn);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
package com.example.w11_rating;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//제목을 변경해줍니다.
setTitle("명화 선호도 투표");
//그림 9개의 별점을 저장할 정수형 배열 선언하고
int voteCount[] = new int[9];
// 모든 값을 0으로 초기화 합니다.
for (int i = 0; i < 9; i++)
voteCount[i] = 0;
// 9개의 이미지뷰를 담을 이미지뷰의 어레이를 선언합니다.
ImageView image[] = new ImageView[9];
// 이미지뷰 각각의 ID를 담은 배열을 선언합니다.
// 실제 저장중인 값은 정수형이기때문에 Integer로 선언합니다.
Integer imageId[] = { R.id.iv1, R.id.iv2, R.id.iv3, R.id.iv4, R.id.iv5,
R.id.iv6, R.id.iv7, R.id.iv8, R.id.iv9 };
// 각 이미지의 이름을 저장하는 배열을 선언합니다.
String imgName[] = { "독서하는 소녀", "꽃장식 모자 소녀", "부채를 든 소녀",
"이레느깡 단 베르양", "잠자는 소녀", "테라스의 두 자매", "피아노 레슨", "피아노 앞의 소녀들",
"해변에서" };
// 반복문을 이용해서 이미지뷰에 xml코드 내의 위젯을 맵핑해줍니다.
// 그리고 클릭리스너를 설정합니다.
// 클릭리스너는 모든 뷰에 대해서 설정 가능합니다 :)
for (int i = 0; i < imageId.length; i++) {
// 왜 이게 final이어야 하는지는 수업에서 말씀드리겠습니다.
final int index = i;
image[i] = (ImageView) findViewById(imageId[i]);
image[i].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 클릭을 받은 그림의 평점을 1 증가시킵니다.
voteCount[index]++;
// 그리고 내가 수행한 결과를 토스트로 화면에 출력해줍니다.
Toast.makeText(getApplicationContext(),
imgName[index] + ": 총 " + voteCount[index] + " 표",
Toast.LENGTH_SHORT).show();
}
});
}
// 결과를 나타내는 activity로 넘어가는 버튼을 작성합니다.
Button btnFinish = (Button) findViewById(R.id.btnResult);
btnFinish.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//intent 를 생성합니다.
Intent intent = new Intent(getApplicationContext(),
ResultActivity.class);
// ResultActivity 로 전달할 내용을 putExtra함수로 저장합니다.
// 이름은 getExtra에서 데이터를 꺼낼 때 사용합합니다.
intent.putExtra("VoteCount", voteCount);
intent.putExtra("ImageName", imgName);
//ResultActivity를 실행합니다.
startActivity(intent);
}
});
}
}
package com.example.w11_rating;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.TextView;
public class ResultActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 결과를 나타내는 레이아웃을 지정합니다.
setContentView(R.layout.result);
// 제목을 설정합니다.
setTitle("투표 결과");
// MainActivity 에서 보낸 intent 를 받아옵니다.
Intent intent = getIntent();
// get~~~~~ 함수를 이용해서 데이터를 받아옵니다.
int[] voteResult = intent.getIntArrayExtra("VoteCount");
String[] imageName = intent.getStringArrayExtra("ImageName");
// 9개의 TextView, RatingBar 를 담을 배열을 선언하고,
TextView tv[] = new TextView[imageName.length];
RatingBar rbar[] = new RatingBar[imageName.length];
// 9개의 TextView, RatingBar 를 할당할 때 사용할 ID 배열을 만들어줍니다.
// tvID는 intent로 받아와도 좋습니다.
Integer tvID[] = { R.id.tv1, R.id.tv2, R.id.tv3, R.id.tv4, R.id.tv5,
R.id.tv6, R.id.tv7, R.id.tv8, R.id.tv9 };
Integer rbarID[] = { R.id.rbar1, R.id.rbar2, R.id.rbar3, R.id.rbar4,
R.id.rbar5, R.id.rbar6, R.id.rbar7, R.id.rbar8, R.id.rbar9 };
// TextView, RatingBar 에 위젯을 찾아다가 맵핑해줍니다.
for (int i = 0; i < voteResult.length; i++) {
tv[i] = (TextView) findViewById(tvID[i]);
rbar[i] = (RatingBar) findViewById(rbarID[i]);
}
// 각 TextVeiw 및 RatingBar에 넘겨 받은 값을 반영해줍니다.
// 별점을 반할때에는 setRating 함수를 영사용합니다.
for (int i = 0; i < voteResult.length; i++) {
tv[i].setText(imageName[i]);
rbar[i].setRating((float) voteResult[i]);
}
// 돌아가기 버튼에 finish() 함수를 실행하도록 해서
// 현재 activity를 종료할 수 있도록 합니다.
Button btnReturn = (Button) findViewById(R.id.btnReturn);
btnReturn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
}